1 条题解
- 
  0
Guest LV 0 MOD
 - 
  0
#include <iostream> #include <cstring> #include <cstdio> using namespace std; char s1[2005],s2[2005]; int l1,l2,j,d[2005][2005],f; int mac(int i) { int x=i,y=l2; while (x && y) { if (!y) break; if (s1[x-1]==s2[y-1]) { x--; y--; } else x--; } if (!y) { j=x; return 1; } else { j=0; return 0; } } int main() { scanf("%s",s1); scanf("%s",s2); l1=strlen(s1); l2=strlen(s2); for (int i=1; i<=l1; i++) { f=mac(i); for (int k=0; k<=i; k++) { d[i][k]=max(d[i-1][k],d[i-1][k-1]); if (f && j>=k-i+j+l2 && k-i+j+l2>=0) d[i][k]=max(d[i][k],d[j][k-(i-j-l2)]+1); } } for (int i=0; i<=l1; i++) printf("%d ",d[l1][i]); return 0; } 
- 1
 
信息
- ID
 - 1350
 - 难度
 - 7
 - 分类
 - (无)
 - 标签
 - 递交数
 - 9
 - 已通过
 - 3
 - 通过率
 - 33%
 - 上传者