C-Common Subsequence
这个是公共子序列,思路的话就比较简单,对两个序列循环对比就行,然后注意输出格式。然后就是表达了,要注意很大的二维三维数组在主函数外定义
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int f[1001][1001]; int main() { int i,j,lena,lenb; char a[1001],b[1001]; while(~scanf("%s %s",&a,&b)) { lena=strlen(a); lenb=strlen(b); memset(f,0,sizeof(f)); for(i=1;i<=lena;i++) for(j=1;j<=lenb;j++) { if(a[i-1]==b[j-1]) f[i][j]=f[i-1][j-1]+1; else f[i][j]=(f[i-1][j]>f[i][j-1]?f[i-1][j]:f[i][j-1]); } printf("%d",f[lena][lenb]); } return 0; }