sdut 2080 最长公共子序列问题

题目:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2080

代码:

View Code
 1 #include<stdio.h>
 2 #include<string.h>
 3 int max(int a, int b)
 4 {
 5     if(a>b)
 6     return a;
 7     else
 8     return b;
 9 }
10 int main()
11 {
12     int len1,len2,i,j;
13     char str1[505],str2[505];
14     int dp[505][505];
15     while(gets(str1)!=NULL)
16     {
17         gets(str2);
18         len1=strlen(str1);
19         len2=strlen(str2);
20         for(i=0;i<len1;i++)
21         dp[i][0]=0;
22         for(i=0;i<len2;i++)
23         dp[0][i]=0;
24         for(i=1;i<=len1;i++)
25         for(j=1;j<=len2;j++)
26         {
27             if(str1[i-1]==str2[j-1])
28             dp[i][j]=dp[i-1][j-1]+1;
29             else
30             dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
31         }
32         printf("%d\n",dp[len1][len2]);
33     }
34     return 0;
35 }
posted @ 2012-08-10 16:59  琳&leen  阅读(166)  评论(0编辑  收藏  举报