hdu1516 字符串编辑距离dp
来源:互联网 发布:python pack_into 编辑:程序博客网 时间:2024/06/05 21:56
wrong answer 无数次,然后把ios::sync_with_stdio(false)删掉,就ac了,至今不知道原因
#include <iostream>#include <algorithm>#include <string>#include <stack>#include <cmath>#include <cstdio>#include <cstring>using namespace std;char source[100], target[100];int dp[100][100];int len1, len2;int solve1(char* source, char* target){ for (int i = 0; i <= len1; ++i) dp[i][0] = i; for (int i = 0; i <= len2; ++i) dp[0][i] = i; for (int i = 1; i <= len1; ++i) { for (int j = 1; j <= len2; ++j) { if (source[i - 1] == target[j - 1]) dp[i][j] = dp[i - 1][j - 1]; else { int Del = dp[i - 1][j] + 1; int Rep = dp[i - 1][j - 1] + 1; int Ins = dp[i][j - 1] + 1; dp[i][j] = min(Del, min(Rep, Ins)); } } } cout << dp[len1][len2] << endl; return dp[len1][len2];}bool flag;enum MyEnum{ Del, Rep, Ins, None}op;int main(void){ while (scanf("%s", source) != EOF) { scanf("%s", target); len1 = strlen(source); len2 = strlen(target); int ans = solve1(source, target); for (int i = len1, j = len2, k = 1; k <= ans;) { if (i == 0 && j != 0) op = Ins; else if (i != 0 && j == 0) op = Del; else { int t = min(dp[i - 1][j - 1], min(dp[i - 1][j], dp[i][j - 1])); if (t == dp[i][j - 1]) op = Ins; if (t == dp[i - 1][j]) op = Del; if (t == dp[i - 1][j - 1]) op = dp[i - 1][j - 1] == dp[i][j] ? None : Rep; //可以覆盖之前确定的op } switch (op) { case Del:printf("%d Delete %d\n", k++, i--); break; case Rep:printf("%d Replace %d,%c\n", k++, i--, target[--j]); break; case Ins:printf("%d Insert %d,%c\n", k++, i + 1, target[--j]); break; case None: --i, --j; break; default: break; } } } return 0;}
0 0
- hdu1516 字符串编辑距离dp
- hdu1516(字符串距离+输出路径)
- DP求两个字符串的编辑距离
- DP求两个字符串的编辑距离
- sdutoj1225--编辑距离(dp:字符串转化)
- 【DP总结】【字符串】最短编辑距离
- 编辑距离 (dp)
- 【dp】编辑距离问题
- zjut1699-编辑距离dp
- 编辑距离问题 dp
- DP解编辑距离
- 编辑距离(DP)
- dp-编辑距离HLG
- dp 编辑距离问题
- 1183 编辑距离 dp
- dp - 编辑距离
- DP-编辑距离问题
- 编辑距离(dp)
- BZOJ4380: [POI2015]Myjnie
- URAL1991-The battle near the swamp
- magin重叠
- Windows socket编程
- hjr-SQL-SQL 常用查询语句
- hdu1516 字符串编辑距离dp
- 如何实现浏览器当前标签是否打开或切换
- jquery层次过滤选择器
- 初识.net界面程序(3)——字符提取和整数整除练习
- 关于自己java项目中出错
- Kendoui:新建一个model
- spark的架构
- linux基础之ssh练习
- 错误:Duplicate entry '*' for key 'PRIMARY'