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 }

 

你可能感兴趣的:(HDU)