ZOJ1425 Crossed Matchings dp

来源:互联网 发布:js获取data value属性 编辑:程序博客网 时间:2024/05/01 08:12
#include<stdio.h>#include<string.h>int n1[101],n2[101];int d[101][101];int max(int a,int b){if(a<b)return b;else return a;}int main(){int T,t1,t2,i,j,k,x,y;scanf("%d",&T);while(T--){scanf("%d%d",&t1,&t2);for(i=1;i<=t1;i++)scanf("%d",&n1[i]);for(i=1;i<=t2;i++)scanf("%d",&n2[i]);memset(d,0,sizeof(d));for(i=1;i<=t1;i++)for(j=1;j<=t2;j++){int ok1=0,ok2=0;if(n1[i]!=n2[j]){for(x=i-1;x>=1;x--)if(n1[x]==n2[j]){ok1=1;break;}if(ok1)for(y=j-1;y>=1;y--)if(n2[y]==n1[i]){ok2=1;break;}}if(ok2)d[i][j]=max(max(max(d[x-1][y-1]+2,d[i-1][j-1]),d[i-1][j]),d[i][j-1]);else d[i][j]=max(max(d[i-1][j-1],d[i][j-1]),d[i-1][j]);}/*for(i=1;i<=t1;i++){for(j=1;j<=t2;j++)printf("%d ",d[i][j]);printf("\n");}*/printf("%d\n",d[t1][t2]);}return 0;}

0 0
原创粉丝点击