1 条题解
-
0
#include<bits/stdc++.h> using namespace std; char s[110],s1[110],s2[110]; int f[110][110]; int main() { int n1,n2; scanf("%s",s+1);n1=strlen(s+1); for(int i=1;i<=n1;i++) s1[i]=s[n1-i+1]; scanf("%s",s+1);n2=strlen(s+1); for(int i=1;i<=n2;i++) s2[i]=s[n2-i+1]; memset(f,-63,sizeof(f)); for(int i=1;i<=n1;i++)f[i][0]=-1; for(int i=1;i<=n2;i++)f[0][i]=-1; f[0][0]=0; for(int i=1; i<=n1;i++) for(int j=1;j<=n2;j++) { if(s1[i]==s2[j])f[i][j]=2+f[i-1][j-1]; else f[i][j]=f[i-1][j-1]; for(int k=j-1;k>=1;k--)f[i][j]=max(f[i][j],f[i][k]-1); for(int k=i-1;k>=1;k--)f[i][j]=max(f[i][j],f[k][j]-1); } int ans=-999999; for(int i=1;i<=n1;i++) ans=max(ans,f[i][n2]); for(int i=1;i<=n2;i++) ans=max(ans,f[n1][i]); printf("%d\n",ans); return 0; }
- 1
信息
- ID
- 147
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- 递交数
- 124
- 已通过
- 46
- 上传者