51nod 1183 编辑距离
来源:互联网 发布:水杨酸洗面奶 知乎 编辑:程序博客网 时间:2024/06/05 15:53
dp问题,类似于LCS
开个大数组存一下分别截止到i,j,两个子字符串的最短距离
然后对于两个m,n长的字串,如果末尾相同,那距离就是dp[i-1][j-1]
如果末尾不同,那距离就是min(a[i-1][j],a[i][j-1],a[i-1][j-1])+1,考虑这三个式子的意义,分别是刨去了末尾元素i,刨去了末尾元素j,和将末尾元素替换为相同值,耗费距离都是1。
代码里打印了数组,交oj的时候注释掉。
//@auther zhou//@Number 201408070203//@start time://@finish time:/*@此处注意:*//* 测试数据*/#include<iostream>#include<cstring>#include<vector>#include<cmath>#include<algorithm>using namespace std;int dp[1005][1005]={0};int main(){string a,b;cin>>a>>b;int lofa=a.size(),lofb=b.size();for(int i=0;i<=lofa;i++){for(int j=0;j<=lofb;j++){if((!i)||(!j)){dp[i][j]=max(i,j);}else {dp[i][j]=min(dp[i-1][j]+1,dp[i][j-1]+1);dp[i][j]=min(dp[i][j],dp[i-1][j-1]+(a[i-1]==b[j-1]? 0:1));//dp[i][j]=min(dp[i-1][j]+1,dp[i][j-1]+1,dp[i-1][j-1]+(a[i]==b[j]? 0:1) );}}}for(int i=0;i<=lofa;i++){//cout<<i<<" ";for(int j=0;j<=lofb;j++){cout<<dp[i][j]<<" ";}cout<<endl;}cout<<dp[lofa][lofb];return 0;}
0 1
- 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 编辑距离
- notes
- 1001. 害死人不偿命的(3n+1)猜想 (15)
- 移位运算符
- vue 混合
- Python中的函数中的参数
- 51nod 1183 编辑距离
- UnityWeb发布问题汇总
- 熟悉css/css3颜色属性
- python作业12
- 通俗易懂的分析——python装饰器之@functools.warps
- CSU 1329~一行盒子(模拟链表)
- Otsu的C语言实现
- 爬虫教程(1)基础入门
- sql的聚合函数