题目链接:
题意:求出两个串最长公共子列的个数。
思路:看别人的,感觉还是有点朦胧。。。。
View Code #include#include #include #define max(x,y) ((x)>(y)?(x):(y)) using namespace std; const int MOD=1000007; const int MAX=1005; int f[MAX][MAX],p[MAX][MAX],q[MAX][MAX],next[MAX][26]; int C,num=0,n,m; char s[MAX],t[MAX]; int DP() { f[n][m]=0; p[n][m]=1; int i,j,k; for(i=n;i>=0;i--) for(j=m;j>=0;j--) if(i!=n||j!=m) { if(i =0;i--) for(j=0;j<26;j++) { next[i][j]=next[i+1][j]; if(t[i]==j+'a') next[i][j]=i; } printf("Case %d: %d\n",++num,DP()); } return 0; }