您的位置:首页 > 其它

111 - History Grading

2013-04-04 11:29 176 查看
描述:题意倒是挺难理解的:给出一个整数n,下一行有n个数,这是正确答案,但是需要转化一下 10 3 1 2 4 9 5 10 6 8 7 ->代表第一件事发生在下标3,第二件事发生在下标1,第三件事发生在下标2……-> 2 3 1 4 6 8 10 9 5 7,以后的输入都要转化,并且和第一次输入的作比较,查找两个数组最大的子序列,输出最大子序列个数
#include <cstdio>
#include <cstring>
int main()
{
//freopen("a.txt","r",stdin);
int n,m;
int num[25],s[25],v[25][25];
scanf("%d",&n);
for(int i=0; i<n; i++)
{
scanf("%d",&m);
num[m]=i;
}
while(scanf("%d",&m)!=EOF)
{
s[m]=0;
for(int i=1; i<n; i++)
{
scanf("%d",&m);
s[m]=i;
}
memset(v,0,sizeof(v));
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
if(num[i]==s[j]) v[i][j]=v[i-1][j-1]+1;
else v[i][j]=v[i-1][j]>v[i][j-1]?v[i-1][j]:v[i][j-1];
}
printf("%d\n",v

);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: