星之海 @ 2017-09-06 22:20:10
#include<string.h>
#include<stdio.h>
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int f[10001][10001]={0},i,j,l;
int s[10001],s2[10001];
scanf("%d",&l);
for(i=1;i<=l;i++)
scanf("%d",&s[i]);
for(j=1;j<=l;j++)
scanf("%d",&s2[j]);
for(i=1;i<=l;i++)
for(j=1;j<=l;j++)
{
f[i][j]=max(f[i-1][j],f[i][j-1]);
if(s[i-1]==s2[j-1])
f[i][j]=max(f[i][j],f[i-1][j-1]+1);
}
printf("%d\n",f[l][l]);
return 0;
}
by wwz20050323 @ 2017-09-06 22:48:36
话说你re了。。。超时是因为你想要用递归。。。我没怎么看题,只能劝你换吧
by Lying_Flat666 @ 2017-09-26 22:52:34
@wwz20050323 wwz,信息学社团的,作弊者。。。
by Lying_Flat666 @ 2017-09-26 22:54:01
@wwz20050323 这个不是递归啊。。。不是递推dp吗?
by wwz20050323 @ 2017-09-27 20:52:26
@wuhanru0001
都因为老师教的都和题解一样的方法,我在老师讲后顺带刷了,结果。。。
by Lying_Flat666 @ 2017-09-27 21:23:32
@wwz20050323 程老师讲dp了吗?