HDU1159+LCS

View Code
 1 #include <stdio.h>
 2 #include <string.h>
 3 #include<iostream>
 4 #define maxn 505
 5 using namespace std;
 6 int dp[ maxn ][ maxn ];
 7 int main(){    
 8     char str1[ maxn ],str2[ maxn ];
 9     //string str1,str2;
10     while ( scanf("%s%s",str1,str2)!=EOF ) {
11         int len1,len2;
12         len1 = strlen( str1 );
13         len2 = strlen( str2 );
14         memset(dp,0,sizeof(dp));
15         int ans=0;
16         for( int i = 0 ; i < len1 ; i++ ){
17             dp[ i ][ 0 ]=0;
18         }
19         for( int i = 0 ; i < len2 ; i ++ ){
20             dp[ 0 ][ i ]=0;
21         }
22         
23         for( int i = 1 ; i <= len1 ; i ++ ){
24             for( int j = 1 ; j <= len2 ; j ++){
25                 if( str1[ i-1 ] == str2[ j-1 ] ){
26                     dp[ i ][ j ]=dp[ i-1 ][ j-1 ]+1;
27                 }
28                 else{ 
29                     dp[ i ][ j ]=max( dp[ i-1 ][ j ], dp[ i ][ j-1 ] );
30                 }
31                 //if( dp[ i ][ j ] > ans ) ans = dp[ i ][ j ];
32             }
33         }
34         
35         cout<<dp[ len1 ][ len2 ]<<endl;
36     }
37     return 0;
38 }
keep moving...
原文地址:https://www.cnblogs.com/xxx0624/p/2830132.html