nyoj36最长公共子序列

来源:互联网 发布:linux dts range 编辑:程序博客网 时间:2024/06/13 13:19

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=36

代码如下:

01.#include<cstdio>
02.#include<cstring>
03.#include<algorithm>
04.using namespace std;
05.char a[1010];
06.char b[1010];
07.int dp[1010][1010];
08.int main()
09.{
10.int icase;
11.scanf("%d",&icase);
12.while(icase--)
13.{
14.scanf("%s%s",a,b);
15.int lena=strlen(a);
16.int lenb=strlen(b);
17.memset(dp,0,sizeof(dp));
18.for(int i=1;i<=lena;i++)
19.for(int j=1;j<=lenb;j++)       //dp数组用来保存所有对应长度的情况
20.{
21.if(a[i-1]==b[j-1])
22.dp[i][j]=dp[i-1][j-1]+1;
23.else
24.dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
25.}
26.printf("%d\n",dp[lena][lenb]);
27.}
28.return 0;
29.}
30. 

0 0
原创粉丝点击