记录编号 291963 评测结果 AAAAAAAAAA
题目名称 字符串的距离 最终得分 100
用户昵称 GravatarAntiLeaf 是否通过 通过
代码语言 C++ 运行时间 0.209 s
提交时间 2016-08-08 13:54:55 内存使用 15.70 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=2010;
int n,m,k,f[maxn][maxn];
char a[maxn],b[maxn];
int main(){
	freopen("blast.in","r",stdin);
	freopen("blast.out","w",stdout);
	memset(f,63,sizeof(f));
	scanf("%s %s %d",a+1,b+1,&k);
	n=strlen(a+1);
	m=strlen(b+1);
	f[0][0]=0;
	//f[0][1]=f[1][0]=k;
	for(int i=1;i<=n;i++)f[i][0]=k*i;
	for(int i=1;i<=m;i++)f[0][i]=k*i;
	for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){
		f[i][j]=min(f[i][j],f[i-1][j-1]+(int)abs(a[i]-b[j]));
		f[i][j]=min(f[i][j],f[i-1][j]+k);
		f[i][j]=min(f[i][j],f[i][j-1]+k);
	}
	printf("%d",f[n][m]);
	fclose(stdin);
	fclose(stdout);
	return 0;
}
/*
cmc
snmn
2
Answer:
10
*/