1 条题解
-
0Guest 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%
- 上传者