诸位,请看代码。
代码如下:
#include<bits/stdc++.h>
using namespace std;
const int S=114514;
int s1[S+10],s2[S+10];
int n;
int f[5002][5002];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
cin>>s1[i];
for(int i=1;i<=n;i++)
cin>>s2[i];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
f[i][j]=max(f[i][j-1],f[i-1][j]);
if(s1[i-1]==s2[j-1])
f[i][j]=f[i-1][j-1]+1;
}
cout<<f[n][n]<<endl;;
return 0;
}
数组足够大,样例可以过,20分,什么情况?谁能解释一下?谢谢。