SDUT 1225-编辑距离(串型dp)
编辑距离
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描写叙述
我们把进行了一次上述三种操作的随意一种操作称为进行了一步字符基本操作。
以下我们定义两个字符串的编辑距离:对于两个字符串a和b。通过上述的基本操作,我们能够把a变成b或b变成a,那么字符串a变成字符串b须要的最少基本字符操作步数称为字符串a和字符串b的编辑距离。
比如:a="ABC",b="CBCD",则a与b的编辑距离为2。
你的任务就是:编一个高速的程序来计算随意两个字符串的编辑距离。
输入
每组測试数据一行。为字符串A和字符串B。
字符串的长度不大于1024,且全为字母。
输出
演示样例输入
ABC CBCD
演示样例输出
2
一開始想爆搜,一看范围傻了。。。串模型DP。
设dp[i][j]代表原始串从1到i位置上与目标串从1到j位置上的最短编辑距离。
dp[i][j]=min(dp[i][j-1]+1(删除b[j]),dp[i-1][j]+1(删除a[i]),a[i]==b[j]?dp[i-1][j-1]:dp[i-1][j-1]+1);
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cctype>
#include <cmath>
#include <cstdlib>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <list>
#define ll long long
using namespace std;
const int INF = 0x3f3f3f3f;
int dp[1025][1025];
char a[1025],b[1025];
int My_min(int x,int y,int z)
{
return min(min(x,y),z);
}
int main()
{
while(~scanf("%s%s",a,b))
{
int lena=strlen(a),lenb=strlen(b);
for(int i=0;i<=lenb;i++)
dp[0][i]=i;
for(int i=0;i<=lena;i++)
dp[i][0]=i;
for(int i=1;i<=lena;i++)
for(int j=1;j<=lenb;j++)
dp[i][j]=My_min(dp[i-1][j]+1,dp[i][j-1]+1,a[i-1]==b[j-1]?dp[i-1][j-1]:dp[i-1][j-1]+1);
printf("%d\n",dp[lena][lenb]);
}
return 0;
}
SDUT 1225-编辑距离(串型dp)的更多相关文章
- 区间型DP
区间型DP是一类经典的动态规划问题,主要特征是可以先将大区间拆分成小区间求解最后由小区间的解得到大区间的解. 有三道例题 一.石子合并 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆. ...
- POJ3659 Cell Phone Network(树上最小支配集:树型DP)
题目求一棵树的最小支配数. 支配集,即把图的点分成两个集合,所有非支配集内的点都和支配集内的某一点相邻. 听说即使是二分图,最小支配集的求解也是还没多项式算法的.而树上求最小支配集树型DP就OK了. ...
- POJ_1088 滑雪(记忆型DP+DFS)
Description Michael喜欢滑雪,这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...
- UVA12186--树型DP
树型DP第一题...就是从boss到底层员工是一个树型结构,底层员工想加薪,如果每个boss都有超过T%的员工要求加薪,他就会往更高的bOSs传达,问如果让根节点的大boss接到加薪要求,最少要有多少 ...
- POJ 3342 - Party at Hali-Bula 树型DP+最优解唯一性判断
好久没写树型dp了...以前都是先找到叶子节点.用队列维护来做的...这次学着vector动态数组+DFS回朔的方法..感觉思路更加的清晰... 关于题目的第一问...能邀请到的最多人数..so ea ...
- 【XSY1905】【XSY2761】新访问计划 二分 树型DP
题目描述 给你一棵树,你要从\(1\)号点出发,经过这棵树的每条边至少一次,最后回到\(1\)号点,经过一条边要花费\(w_i\)的时间. 你还可以乘车,从一个点取另一个点,需要花费\(c\)的时间. ...
- 洛谷P3354 Riv河流 [IOI2005] 树型dp
正解:树型dp 解题报告: 传送门! 简要题意:有棵树,每个节点有个权值w,要求选k个节点,最大化∑dis*w,其中如果某个节点到根的路径上选了别的节点,dis指的是到达那个节点的距离 首先这个一看就 ...
- NYOJ 252 01串 普通dp
题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=252 分析: dp[2][0]=2;//表示长度为2的满足要求的且以0结尾的串个数 ...
- 【POJ 3140】 Contestants Division(树型dp)
id=3140">[POJ 3140] Contestants Division(树型dp) Time Limit: 2000MS Memory Limit: 65536K Tot ...
随机推荐
- 样条函数(spline function)—— 分段多项式函数(piecewise polynomial function)
1. 分段多项式函数 样条函数是某种意义上的分段函数. Spline (mathematics) - Wikipedia 最简单的样条函数是一种分段多项式函数(piecewise polynomial ...
- MongoDB索引05-30学习笔记
MongoDB 索引 索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录. 这种扫描全集合的查询效率是非常低的,特别在处理大 ...
- ubuntu-设置分辨率
xrandr -s 1440x900 -r 60 前提是,分辨率选项中有对应的设置选项.
- Android 低功耗蓝牙的多设备连接与数据接收,简单实现
在网络层,互联网提供所有应用程序都要使用的两种类型的服务,尽管目前理解这些服务的细节并不重要,但在所有TCP/IP概述中,都不能忽略他们: 无连接分组交付服务(Connectionless Packe ...
- JavaScript实现延时提示框
<html> <head> <meta charset="utf-8"> <title>无标题文档</title> &l ...
- Walking on the path of Redis --- Introduction and Installation
废话开篇 以前从来没听说过有Redis这么个玩意,无意间看到一位仁兄的博客,才对其有所了解,所以决定对其深入了解下.有不对的地方还请各位指正. Redis介绍 下面是官方的介绍,不喜欢english的 ...
- 多态&接口
多态 多态定义:允许一个父类变量引用子类的对象:允许一个接口类型引用实现类对象. 多态的调用:使用父类的变量指向子类的对象:所调用的属性和方法只限定父类中定义的属性和方法,不能调用子类中特有的属性和方 ...
- TOF相机基本知识
TOF是Time of flight的简写,直译为飞行时间的意思.所谓飞行时间法3D成像,是通过给目标连续发送光脉冲,然后利用传感器接收从物体返回的光,通过探测光脉冲的飞行时间来得到目标物的距离.TO ...
- HTML 引入 CSS、JS 的三种方式
描述部分按 CSS 来的,其实 JavaScript 也一样,具体区别看代码 外部样式表 当样式需要被应用到很多页面的时候,外部样式表将是理想的选择.使用外部样式表,你就可以通过更改一个文件来改变整个 ...
- Java泛型的一段代码
package com.chase.test; import java.util.ArrayList; import java.util.Hashtable; import java.util.Lis ...