2 条题解
-
0
#include <bits/stdc++.h> using namespace std; char s1[2110], s2[2110]; int f[2110][2110]; int main() { int n1, n2, K; scanf("%s", s1 + 1); n1 = strlen(s1 + 1); scanf("%s", s2 + 1); n2 = strlen(s2 + 1); scanf("%d", &K); memset(f, 63, sizeof(f)); for(int i = 1; i <= n1; i++) f[i][0] = i * K; for(int i = 1; i <= n2; i++) f[0][i] = i * K; f[0][0] = 0; for(int i = 1; i <= n1; i++) for(int j = 1; j <= n2; j++) { f[i][j] = min(f[i][j - 1] + K, f[i - 1][j] + K); f[i][j] = min(f[i][j], f[i - 1][j - 1] + abs(s1[i] - s2[j])); } printf("%d\n", f[n1][n2]); return 0; } -
0
#include<bits/stdc++.h> using namespace std; char s1[2110],s2[2110]; int f[2110][2110]; int main() { int n1,n2,K; scanf("%s",s1+1);n1=strlen(s1+1); scanf("%s",s2+1);n2=strlen(s2+1); scanf("%d",&K); memset(f,63,sizeof(f)); for(int i=1;i<=n1;i++)f[i][0]=i*K; for(int i=1;i<=n2;i++)f[0][i]=i*K; f[0][0]=0; for(int i=1; i<=n1;i++) for(int j=1;j<=n2;j++) { f[i][j]=min(f[i][j-1]+K,f[i-1][j]+K); f[i][j]=min(f[i][j],f[i-1][j-1]+abs(s1[i]-s2[j])); } printf("%d\n",f[n1][n2]); return 0; }
- 1
信息
- ID
- 152
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 84
- 已通过
- 48
- 上传者