字符串的修改(动态规划-最短编辑距离)
来源:互联网 发布:unity3d资源提取工具 编辑:程序博客网 时间:2024/06/11 17:51
1187: 字符串的修改
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 6 Solved: 5
[Submit][Status][Web Board]
Description
设A和B是两个字符串。我们要用最少的字符操作次数,将字符串A转换为字符串B。这里所说的字符操作共有三种:
1. 删除一个字符;
2. 插入一个字符;
3. 将一个字符改为另一个字符。
对任给的两个字符串A和B,计算出将字符串A变换为字符串B所用的最少字符操作次数。
Input
第一行为字符串A;第二行为字符串B;字符串A和B的长度均小于200。
Output
只有一个正整数,为最少字符操作次数。
Sample Input
sfdxbqwgfdgw
Sample Output
4
HINT
见1793,求出a和b的最长公共子序列,接下来就好办了
Source
动态规划
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;#define N 205int dp[N][N];//dp[i][j]表示a的前i个和b的前j个相同后的最短距离char a[N],b[N];void match(char *s,char *s1,int lena,int lenb){ int i,j,inserts,deletes,replaces; for(i=1;i<=lena;i++) { dp[i][0]=i; } for(j=1;j<=lenb;j++) { dp[0][j]=j; } for(i=1;i<=lena;i++) { for(j=1;j<=lenb;j++) { inserts=dp[i][j-1]+1;//插入 deletes=dp[i-1][j]+1;//删除 replaces;//替换 if(s[i-1]==s1[j-1]) { replaces=dp[i-1][j-1]; } else { replaces=dp[i-1][j-1]+1; } dp[i][j]=min(min(inserts,deletes),replaces); } } cout<<dp[lena][lenb]<<endl;}int main(){ int la,lb; while(cin>>a>>b) { la=strlen(a); lb=strlen(b); match(a,b,la,lb); } return 0;}
0 0
- 字符串的修改(动态规划-最短编辑距离)
- 动态规划---最短编辑距离
- 最短编辑距离-动态规划
- AGTC(动态规划-最短编辑距离)
- 动态规划---最短编辑距离
- 动态规划(3)最短编辑距离
- 动态规划---最短编辑距离
- POJ 3356 最短编辑距离(动态规划)
- poj 3356 AGTC(动态规划:最短编辑距离)
- 动态规划-最短编辑距离变形----DNA对比问题
- 动态规划 - 字符串的编辑距离
- 动态规划(2)最优对准与最短编辑距离
- 插入、删除、修改操作 代价不等的 最短编辑距离 动态规化求法
- 动态规划 字符串编辑距离
- 【动态规划】字符串编辑距离(Levenshtein距离)算法
- 求两个字符串的最短编辑距离
- Python实现求两个字符串的最短编辑距离
- Trie树求多个字符串最短编辑距离的空间优化
- 图像处理------Fuzzy C Means的聚合算法
- [转]ORACLE函数大全
- GRE写作必备句型
- vs2012的安装问题
- 为什么要学习GTK?
- 字符串的修改(动态规划-最短编辑距离)
- 图像处理------K-Means算法演示
- PHP文件操作类(有所改动)
- Windows python实现截屏功能
- SylixOS的BSP开发实例之S3C2416【前言】常用软件介绍
- ios中UIWebView加载本地HTML,以及其中的JavaScript方法的调用
- Swap Nodes in Pairs(C语言)
- 怎么解决eclipse报PermGen space异常的问题
- ORA-29786: SIHA attribute GET failed with error