比赛 20090916练习赛 评测结果 AAAAAAAAAA
题目名称 字符串的距离 最终得分 100
用户昵称 王者自由 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-09-21 20:31:59
显示代码纯文本
#include <cstdio>
#include <cstring>
const int MAXN = 2010;
int k, f[MAXN][MAXN];
char s1[MAXN], s2[MAXN];
inline int min(int a, int b) {
	return a<b ? a : b;
}
inline int min(int a, int b, int c) {
	return min(min(a, b), c);
}
inline int abs(int x) {
	return x>0 ? x : -x;
}
int main() {
	freopen("blast.in", "r", stdin);
	freopen("blast.out", "w", stdout);
	scanf("%s\n%s\n%d\n", s1, s2, &k);
	int l1 = strlen(s1), l2 = strlen(s2);
	for(int i=1; i<=l1; i++)
		f[i][0] = i * k;
	for(int i=1; i<=l2; i++)
		f[0][i] = i * k;
	for(int i=1; i<=l1; i++)
		for(int j=1; j<=l2; j++)
			f[i][j] = min(f[i-1][j] + k, f[i][j-1] + k,
				f[i-1][j-1] + abs(s1[i-1] -s2[j-1]));
	printf("%d\n", f[l1][l2]);
	return 0;
}