zp1425.cpp

来自「浙江大学acm在线判题器代码集。 本人在浙大acm判题器上的所有代码(心血) 」· C++ 代码 · 共 40 行

CPP
40
字号
#include <stdio.h>

int main(int argc, char* argv[])
{
  int cs,n,m,i,j,k,l,a[110],b[110],p[110][110];
  scanf("%d",&cs);

  for (i=0;i<=110;i++)
    p[i][0]=p[i][1]=0;
  for (j=0;j<=110;j++)
    p[0][j]=p[1][j]=0;

  while (cs--)
  {
    scanf("%d%d",&n,&m);
    for (i=1;i<=n;i++)
      scanf("%d",a+i);
    for (i=1;i<=m;i++)
      scanf("%d",b+i);
    for (i=2;i<=n;i++)
      for (j=2;j<=m;j++)
      {
        p[i][j]=0;
        for (k=1;k<=i;k++)
          for (l=1;l<=j;l++)
            if (p[k][l]>p[i][j])
              p[i][j]=p[k][l];
        if (a[i]!=b[j])
          for (k=1;k<i;k++)
            for (l=1;l<j;l++)
              if (a[i]==b[l] && b[j]==a[k])
                if (p[i][j]<p[k-1][l-1]+1)
                  p[i][j]=p[k-1][l-1]+1;
      }
    printf("%d\n",p[n][m]*2);
  }
  return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?