博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces 56D Changing a String 编辑距离 记忆dp
阅读量:7112 次
发布时间:2019-06-28

本文共 1356 字,大约阅读时间需要 4 分钟。

主题链接:

编辑距离。,== 一边dp虽然录制前体累,,依然是dp

#include
#include
#include
#include
using namespace std;#define ll int#define N 1010char s[N], t[N];int dp[N][N], n, m;// 0为插入 1为删除 2 3为替换struct node{ int op; int pos; char c; node(int A=0,int E=0,char D=0):op(A),pos(E), c(D){} void put(){ if(op== 2) printf("REPLACE %d %c\n", pos, c); else if(op == 0) printf("INSERT %d %c\n", pos +1, c); else if(op == 1) printf("DELETE %d\n", pos); }}P;void dfs(int a, int b){ if(a == 0 && b==0)return ; if(s[a] == t[b] && dp[a-1][b-1] == dp[a][b]) dfs(a-1, b-1); else { if(a && dp[a-1][b] +1 == dp[a][b]) { P = node(1, a); P.put(); dfs(a-1, b); } else if(b && dp[a][b-1] +1 == dp[a][b]) { P = node(0, a, t[b]); P.put(); dfs(a, b-1); } else if(a && b && dp[a-1][b-1] +1 == dp[a][b]) { P = node(2, a, t[b]); P.put(); dfs(a-1, b-1); } }}void input(){ scanf("%s", t+1); n = strlen(s+1); m = strlen(t+1);}int main(){ int i, j; while(~scanf("%s", s+1)){ input(); dp[0][0] = 0; for(i = 1; i <= n; i++) dp[i][0] = i; for(i = 1; i <= m; i++) dp[0][i] = i; for(i = 1; i <= n; i++) for(j = 1; j <= m; j++) dp[i][j] = min(min(dp[i-1][j], dp[i][j-1])+1, dp[i-1][j-1] + (s[i]!=t[j])); printf("%d\n", dp[n][m]); dfs(n, m); } return 0;}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

你可能感兴趣的文章
mysql加密函数
查看>>
JedisConnectionException: Unexpected end of stream.
查看>>
openstack中彻底删除计算节点的操作记录
查看>>
统一回复《怎么学JavaScript?》
查看>>
[AngularJS] Using an AngularJS directive to hide the keyboard on submit
查看>>
博客迁址通知
查看>>
Git查看、删除、重命名远程分支和tag(转)
查看>>
Atitit 编程语言常用算法attilax总结
查看>>
更改WAS Profiles的概要文件的server1的SDK版本
查看>>
Centos下MySQL主从同步配置
查看>>
如何在Node.js中合并两个复杂对象
查看>>
(笔记)VC6插件安装--Unable to register this add-in because its DllRegisterServer returns an error...
查看>>
【.net 深呼吸】细说CodeDom(7):索引器
查看>>
monolog使用
查看>>
【AtCoder010】B - Boxes(差分)
查看>>
三种 Failover 之 Client-Side Connect time Failover、Client-Side TAF、Service-Side TAF
查看>>
ES 相似度算法设置(续)
查看>>
46:八进制到十进制
查看>>
JAVA4种线程池的使用
查看>>
MonkeyRunner 模块
查看>>