uva 10405 Longest Common Subsequence

果的LCS,输入有trick,可能遇到空格,不能用scanf,当然,正则表达式也行

#include <stdio.h>
#include 
<string.h>

char str1[1010], str2[1010];
int data[1010][1010];

int max(int a, int b)
{
    
return a>b?a:b;
}

int LCS()
{
    
int len1= strlen(str1)-1, len2= strlen(str2)-1;
    
int i, j;
    
for ( i = max(len1, len2) ; i >= 0 ; i-- )
        data[i][
0]= data[0][i]= 0;
    
for ( i = 1 ; i <= len1 ; i++ )
        
for ( j = 1 ; j <= len2 ; j++ )
            
if ( str1[i-1== str2[j-1] )
                data[i][j]
= data[i-1][j-1]+1;
            
else
                data[i][j]
= max(data[i-1][j], data[i][j-1]);
    
return data[len1][len2];
}

int main()
{
    
while ( NULL != fgets(str1, sizeof(str1), stdin) )
    {
        fgets(str2, 
sizeof(str2), stdin);
        printf(
"%d\n", LCS());
    }
    
return 0;
}

PS:fgets会把\n也读进来

posted on 2011-09-09 21:20 purplest 阅读(191) 评论(0)  编辑 收藏 引用 所属分类: DP

<2011年8月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿

随笔分类(70)

随笔档案(68)

ACMer

搜索

最新随笔

最新评论