//求两个串的最长公共连续子串
#include <iostream>
using namespace std;
int dp[ 100 ][ 100 ];
int max_length;
void get_length( char str1[] , char str2[] ) {
int length1 = strlen( str1 );
int length2 = strlen( str2 );
int i , j;
for( i = 0 ; i <= length1 ; i ++ ) {
dp[ i ][ 0 ] = 0;
}
for( j = 0 ; j <= length2 ; j ++ ) {
dp[ 0 ][ j ] = 0;
}
for( i = 0 ; i < length1 ; i ++ ) {
for( j = 0 ; j < length2 ; j ++ ) {
//下面就是规划方程
if( str1[ i ] == str2[ j ] ) {
dp[ i ][ j ] = dp[ i - 1 ][ j - 1 ] + 1;
if( dp[ i ][ j ] > max_length ) {
max_length = dp[ i ][ j ];
}
}
else{
dp[ i ][ j ] = 0;
}
}
}
cout << max_length << endl;
}
int main() {
char str1[ 100 ];
char str2[ 100 ];
cin >> str1 + 1;
cin >> str2 + 1;
max_length = 0;
get_length( str1 + 1 , str2 + 1 );
return 1;
}
/*
alksdfjaslkjd456789kb4564
123456789kbaca
*/
最长公共连续子串
最新推荐文章于 2022-10-29 19:27:30 发布