/ Vijos / 讨论 / 距离 /

为什吗我的会超时3个点??

#include<cstdio>
#include<cstdlib>
#include<cstring>
#define maxn 2001
char a[maxn],b[maxn];
int k,f[maxn][maxn];
int min(int x,int y,int z){
if(x>y) x=y;
if(x>z) x=z;
return x;
}
int main(){
scanf("%s",a);
scanf("%s",b);
scanf("%d",&k);
for(int i=0;i<strlen(a);i++)
for(int j=0;j<strlen(b);j++){
f[i+1][0]=k*(i+1);
f[0][j+1]=k*(j+1);
f[i+1][j+1]=min(f[i][j]+abs(a[i]-b[j]),f[i][j+1]+k,f[i+1][j]+k);
}
printf("%d\n",f[strlen(a)][strlen(b)]);
system("pause");
return 0;
}

2 条评论

  • 1

信息

ID
1680
难度
3
分类
动态规划 | 动态规划 | LCS 点击显示
标签
(无)
递交数
1639
已通过
793
通过率
48%
被复制
5
上传者