51nod 1183 编辑距离
来源:互联网 发布:数据库事务特性 编辑:程序博客网 时间:2024/06/05 06:15
51nod 1183 编辑距离
根据LCS的思路,做两字符串的比较。
f(i,j)表示A字符串在1–i,于B字符串在1–j时的最小改变量。
递推式:
f(i,j) = min(f(i – 1, j – 1) + same(i,j), f(i – 1,j ) + 1, f(i, j – 1) + 1)
初始值:
f(0, j) = j
f(i, 0) = i
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <queue>#include <map>using namespace std;#define LL long long#define INF 0x3f3f3f3f#define PI acos(-1.0)#define E 2.71828#define MOD 1000000007#define N 1010char a[N],b[N];int dp[N][N];int main(){ memset(dp,0,sizeof(dp)); scanf("%s%s",a+1,b+1); a[0] = b[0] = ' '; int lena = strlen(a); int lenb = strlen(b); for(int i = 0; i < lena; i++) { for(int j = 0; j < lenb; j++) { if(i == 0 || j == 0) dp[i][j] = i==0?j:i; else { int x = min(dp[i-1][j],dp[i][j-1])+1; dp[i][j] = min(x, dp[i-1][j-1]+!(a[i]==b[j])); } } } printf("%d\n",dp[lena-1][lenb-1]); return 0;}
输出dp图:
由于只需要最后一行的值,那么就像01背包一样可以优化空间。
char a[N],b[N];int dp[N];int main(){ memset(dp,0,sizeof(dp)); scanf("%s%s",a+1,b+1); a[0] = b[0] = ' '; int lena = strlen(a); int lenb = strlen(b); for(int i = 0; i < lenb; i++) //第一行初始值 { dp[i] = i; //printf("%3d",dp[i]); } //puts(""); int next; for(int i = 1; i < lena; i++) { for(int j = 0; j < lenb; j++) { if(j == 0) { next = dp[j]; //左上角的值保存(即dp[i-1][j-1]) dp[j] = i; //每行的最左边初始值 } else { int x = min(dp[j-1],dp[j])+1; int y = next+!(a[i]==b[j]); next = dp[j]; dp[j] = min(x,y); } //printf("%3d",dp[j]); } //puts(""); } printf("%d\n",dp[lenb-1]); return 0;}
0 0
- 51nod 1183 编辑距离
- 51nod 1183 编辑距离
- 51nod 1183 编辑距离
- 51nod 1183 编辑距离
- [51nod]1183 编辑距离
- 51 nod 1183 编辑距离
- 51nod--1183 编辑距离
- 51nod 1183 编辑距离
- 51nod 1183 编辑距离
- 51Nod 1183 编辑距离
- 51nod 1183 编辑距离
- 51Nod 1183 编辑距离
- 51Nod 1183编辑距离
- 51Nod 1183编辑距离
- 51Nod-1183-编辑距离
- 51Nod 1183:编辑距离
- 51nod 1183 编辑距离
- 51Nod-1183 编辑距离
- 学习网页设计,你必须要去学习的知识点!
- Vim
- 10.03
- 设计模式(一)
- 框架入门 中级篇 (中)twig模板引擎
- 51nod 1183 编辑距离
- leetcode-013-Roman to Integer
- 长恨歌(白居易)
- 下班后的1小时, 会影响到你的工作和生活
- CUDA学习--内存处理之全局内存(5)
- Avalon,继Angular之后
- ContentProvider简单使用 -- Android学习之路
- python挑战之level 30
- Linux服务