POJ3356 AGTC

原题链接:POJ3356

题目大意:最小编辑距离模板题。

线性 $\rm DP$

吐槽:多测怎么都不说明呀。同样的题目:AcWing 902. 最短编辑距离

代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <algorithm>

using namespace std;

const int N = 1010;

int n, m;
char a[N], b[N];
int f[N][N]; // f[i][j]:将a[1~i]变成b[1~j]的最少操作次数

void solve() {
	for (int i = 0; i <= n; i++) f[i][0] = i; // 删i次
	for (int j = 0; j <= m; j++) f[0][j] = j; // 增j次
	for (int i = 1; i <= n; i++) {
	    for (int j = 1; j <= m; j++) {
			f[i][j] = min(f[i][j - 1] + 1, f[i - 1][j] + 1);
			if (a[i] == b[j]) f[i][j] = min(f[i][j], f[i - 1][j - 1]);
			else f[i][j] = min(f[i][j], f[i - 1][j - 1] + 1);
		}
	}
	cout << f[n][m] << endl;
}

int main() {
    while (cin >> n >> a + 1 >> m >> b + 1) solve();
	return 0;
}
updatedupdated2020-05-112020-05-11
加载评论
点击刷新