pku 3356 AGTC
2009-04-19 10:47
190 查看
#include <iostream> #include <string> using namespace std; int v[1001][1001]; int main() { int m, n; string s1, s2; while(scanf("%d", &m)!=EOF) { cin >> s1; scanf("%d", &n); cin >> s2; for(int i = 1; i <= n; ++i) v[0][i] = i; for(int i = 1; i <= m; ++i) v[i][0] = i; for(int i = 1; i <= m; ++i) for(int j = 1; j <= n; ++j) if(s1[i-1] == s2[j-1]) v[i][j] = min(min(v[i-1][j-1], v[i-1][j]+1), v[i][j-1]+1); else v[i][j] = min(min(v[i-1][j-1]+1, v[i-1][j]+1), v[i][j-1]+1); printf("%d/n", v[m] ); } return 0; } /* min{v[i-1][j-1], v[i-1][j]+1, v[i][j-1]+1} (s[i] = s[j]) v[i][j] = min{v[i-1][j-1]+1, v[i-1][j]+1, v[i][j-1]+1} (s[i] != s[j]) //1.s[i] = s[j],其中v[i-1][j-1]+1表示不作处理,v[i-1][j]+1表示删除字符s[i], v[i][j-1]+1表示在s[i]后添加s[j] //s[i] != s[j],其中v[i-1][j-1]+1表示把s[i]变成s[j],v[i-1][j]+1表示删除字符s[i], v[i][j-1]+1表示在s[i]后添加s[j] //2.注意初始化的处理 result: Problem: 3356 User: xiaofengsheng Memory: 4288K Time: 32MS Language: G++ Result: Accepted */
相关文章推荐
- pku3356---AGTC(做的最少修改动作,动态规划)
- PKU3356 AGTC (简单DP)
- pku 3356 AGTC
- POJ-3356 AGTC (最短编辑距离问题)
- POJ 3356 AGTC(经典DP Edit Distance)
- POJ 3356 AGTC.
- poj 3356 AGTC(dp 求最短编辑距离)
- poj 3356 AGTC 简单dp
- POJ 3356 AGTC (最长公共子序列)
- poj 3356 AGTC
- poj 3356 AGTC
- [算法] poj 3356 字符串的距离 AGTC
- POJ 3356 AGTC 最短编辑距离 DP
- poj 3356 AGTC(动态规划:最短编辑距离)
- POJ 3356 AGTC(算法导论15-5编辑距离) 经典dp
- pku 3356 (DP)
- poj 3356 AGTC
- poj 3356 AGTC
- [算法] poj 3356 字符串的距离 AGTC
- poj 3356 AGTC 【编辑距离】