したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

管理人の独り言(プログラミング関連)

880774さん:2008/11/22(土) 18:49:58 ID:CENbthlg0
情報オリンピックの本選の第二問目をやってみたのだが、バグ潰しに何時間かかったことか・・・
-----
unsigned int check(const char *x, const char *y){
unsigned int ret = 0;
while(x[ret] && y[ret] && x[ret] == y[ret]) ++ret;

return ret;
}

unsigned int mmmmax(const char * x_, const char * y_){
unsigned int x_len_ = std::strlen(x_);
unsigned int y_len_ = std::strlen(y_);

if(x_len_ > y_len_){
std::swap(x_len_, y_len_);
std::swap(x_, y_);
}

const unsigned int x_len = x_len_, y_len = y_len_;
const char * const x = x_;
const char * const y = y_;

unsigned int max = 0;

for(unsigned int i = 0; i < x_len; ++i){
const unsigned int current_max = x_len - i;
if(current_max > max){
unsigned int ret;
for(unsigned int j = 0; j < i; ++j){
ret = check(x + j, y + y_len - current_max);
if(ret == current_max){
return ret;
}
if(max < ret){
max = ret;
}
}
for(unsigned int j = 0; j < y_len - current_max + 1; ++j){
ret = check(x + i, y + j);
if(ret == current_max){
return ret;
}
if(max < ret){
max = ret;
}
}
}else{
break;
}
}

return max;
}


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板