最長公共字串

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
 
#define N 1005
 
char str1[N], str2[N];
 
int LCS(){
    int num[2][N], i, j, k;
    memset(num, 0, sizeof(num));
    for( i = 0; i < strlen(str1); i ++)
        for(j = 0, k = i&1; j < strlen(str2); j ++)
            if( str1[i] == str2[j] ) num[k][j+1] = num[!k][j] + 1;
            else num[k][j+1] = max( num[k][j], num[!k][j+1] );
    return num[k][j];
}
 
int main(){
    while( ~scanf("%s%s",str1, str2) ){
        printf("%d\n", LCS());
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章