D. Changing a String (编辑距离)(dp+记忆化)(dp后寻找路径大法)
来源:互联网 发布:python离线安装包下载 编辑:程序博客网 时间:2024/06/02 01:23
题目链接:
点击打开链接
http://codeforces.com/contest/56/problem/D
题意:
编辑距离吧。
有三种操作:
insert,delete,replace。
给你两个字符串A和B,问由A变成B最少要经过多少次操作?
还要你输出具体的步骤。
题解:
dp。dp[ i ] [ j ] 代表串A前i个变成串B前j个的最小花费。
dp后再倒着寻找路径就好了。好题啊。
AC代码:
#include <cstdio>#include <cstring>#define N 1001using namespace std;int n, m, dp[N][N];char a[N], b[N];int main(){ scanf("%s%s", a, b); n = strlen(a), m = strlen(b); dp[0][0] = 0; for(int i = 1; i <= n; ++ i) dp[i][0] = i; for(int j = 1; j <= m; ++ j) dp[0][j] = j; for(int i = 1; i <= n; ++ i) for(int j = 1; j <= m; ++ j) { dp[i][j] = N; if(j && dp[i][j - 1] + 1 < dp[i][j]) // INSERT dp[i][j] = dp[i][j - 1] + 1; if(i && dp[i - 1][j] + 1 < dp[i][j]) // DELETE dp[i][j] = dp[i - 1][j] + 1; if(i && j && dp[i - 1][j - 1] + 1 < dp[i][j]) // REPLACE dp[i][j] = dp[i - 1][j - 1] + 1; if(i && j && a[i - 1] == b[j - 1] && dp[i - 1][j - 1] < dp[i][j]) dp[i][j] = dp[i - 1][j - 1]; } printf("%d\n", dp[n][m]); while(n > 0 || m > 0) //dp后再找路径 { if(m && dp[n][m - 1] + 1 == dp[n][m]) { printf("INSERT %d %c\n", n + 1, b[m - 1]); m --; continue; } if(n && dp[n - 1][m] + 1 == dp[n][m]) { printf("DELETE %d\n", n); n --; continue; } if(n && m && dp[n - 1][m - 1] + 1 == dp[n][m]) { printf("REPLACE %d %c\n", n, b[m - 1]); n --, m --; continue; } n --, m --; } return 0;}
1 0
- D. Changing a String (编辑距离)(dp+记忆化)(dp后寻找路径大法)
- Codeforces 56D Changing a String 编辑距离 记忆化dp
- codeforces 56D Changing a String (dp编辑距离)
- 编辑距离 (dp)
- 编辑距离(dp)
- 编辑距离 (dp)
- 编辑距离算法(dp)
- 1183 编辑距离 (dp)
- codeforces 56D Changing a String 区间dp,字符串
- 【51Nod】1183 - 编辑距离(dp & 编辑距离)
- 404D Minesweeper 1D(记忆化搜索,dp)
- POJ 3356 AGTC (编辑距离 DP)
- sdutoj1225--编辑距离(dp:字符串转化)
- EOJ 2857:编辑距离(DP)
- 51nod 编辑距离 (DP)
- 51nod 编辑距离 (DP)
- Hust oj 1284 编辑距离(DP)
- codevs 2598 编辑距离问题(DP)
- 有问题的C语言代码
- MySql+java
- 二分查找
- 格式化字符串漏洞利用 七、工具
- 关于ajax请求后js绑定事件失效问题解决方法
- D. Changing a String (编辑距离)(dp+记忆化)(dp后寻找路径大法)
- javascript中提高代码的封装性
- Java 集成Ftp Server踩到的坑
- ACM小学生算术
- 关于Android:layout_weight的真实含义
- 剑指offer题二
- 中文数字转换成阿拉伯数字。
- 257. Binary Tree Paths | 二叉树的路径
- Velocity代码片段