POJ 3356.AGTC
问题简述:
输入两个序列x和y,分别执行下列三个步骤,将序列x转化为y
(1)插入;(2)删除;(3)替换;
要求输出最小操作数。
原题链接:http://poj.org/problem?id=3356
解题思路:
明显的动态规划题,输入两个字符串 a[0...m-1] , b[0...n]
使用二维数组 dp[i,j] 记录 a[0...i] 和 b[0...j] 对应的最小操作数
显然有以下递归方程:
dp[i,0] = i
dp[0,j] = j
dp[i,j] = dp[i-1,j-1] if a[i-1]==b[j-1]
dp[i,j] = min(dp[i-1,j-1],dp[i-1,j],dp[i,j-1]) + 1 if a[i-1]!=b[j-1]
源代码
/*
OJ: POJ
ID: 3013216109
TASK: 3356.AGTC
LANG: C++
NOTE: DP
*/
#include <cstdio> const int MAX=;
int m,n,i,j,k;
char a[MAX],b[MAX];
int dp[MAX][MAX],c[MAX]; int min(int x,int y,int z) {
if(x<+y&&x<=z)
return x;
if(y<=x&&y<=z)
return y;
if(z<=x&&z<=y)
return z;
} int main()
{
while(scanf("%d %s",&m,a)!=EOF) {
scanf("%d %s",&n,b);
for(i=;i<=m;i++)
dp[i][]=i;
for(j=;j<=n;j++)
dp[][j]=j;
k=;
for(i=;i<=m;i++) {
for(j=;j<=n;j++) {
if(a[i-]==b[j-])
dp[i][j]=dp[i-][j-];
else
dp[i][j]=min(dp[i-][j-],dp[i-][j],dp[i][j-])+;
}
}
printf("%d\n",dp[m][n]);
}
return ;
}
POJ 3356.AGTC的更多相关文章
- POJ 3356 AGTC(最小编辑距离)
POJ 3356 AGTC(最小编辑距离) http://poj.org/problem?id=3356 题意: 给出两个字符串x 与 y,当中x的长度为n,y的长度为m,而且m>=n.然后y能 ...
- poj 3356 AGTC(线性dp)
题目链接:http://poj.org/problem?id=3356 思路分析:题目为经典的编辑距离问题,其实质为动态规划问题: 编辑距离问题定义:给定一个字符串source,可以对其进行复制,替换 ...
- POJ 3356 AGTC(最长公共子)
AGTC Description Let x and y be two strings over some finite alphabet A. We would like to transform ...
- POJ 3356 AGTC(DP-最小编辑距离)
Description Let x and y be two strings over some finite alphabet A. We would like to transform x int ...
- POJ 3356 AGTC(DP求字符串编辑距离)
给出两个长度小于1000的字符串,有三种操作,插入一个字符,删除一个字符,替换一个字符. 问A变成B所需的最少操作数(即编辑距离) 考虑DP,可以用反证法证明依次从头到尾对A,B进行匹配是不会影响答案 ...
- POJ 3356(最短编辑距离问题)
POJ - 3356 AGTC Time Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u Desc ...
- POJ 3356 水LCS
题目链接: http://poj.org/problem?id=3356 AGTC Time Limit: 1000MS Memory Limit: 65536K Total Submission ...
- Poj 3356 ACGT(LCS 或 带备忘的递归)
题意:把一个字符串通过增.删.改三种操作变成另外一个字符串,求最少的操作数. 分析: 可以用LCS求出最大公共子序列,再把两个串中更长的那一串中不是公共子序列的部分删除. 分析可知两个字符串的距离肯定 ...
- poj 3356
Description Let x and y be two strings over some finite alphabet A. We would like to transform x int ...
随机推荐
- hdu 2604 Queuing(矩阵快速幂乘法)
Problem Description Queues and Priority Queues are data structures which are known to most computer ...
- 通信基站(dfs回溯,思维)
Description Input Output
- Docker简单介绍
Docker简单介绍 Docker是一个能够把开发的应用程序非常方便地部署到容器的开源引擎.由Docker公司团队编写,基于Apache 2.0开源授权协议发行.Docker的主要目的例如以下: 提供 ...
- lua的string库与强大的模式匹配
lua原生解释器对字符串的处理能力是十分有限的,强大的字符串操作能力来自于string库.lua的string函数导出在string module中.在lua5.1,同一时候也作为string类型的成 ...
- 用事件与CSS改变按钮不同状态下的颜色
目标效果: 表单的群发按钮,在鼠标悬停时为深蓝色,鼠标离开时为淡蓝色. HTML代码: <button id="submitBtn" class="btn&quo ...
- i = i++ 在java字节码层面的分析
有这么一段代码: package zl.test; public class PcodeTest { /** * @param args */ public static void main(Stri ...
- VS中,无法嵌入互操作类型“……”,请改用适用的接口的解决方法
最近使用VS,在引用COM组件的时候,出现了无法嵌入互操作类型“……”,请改用适用的接口的错误提示.查阅资料,找到解决方案,记录如下: 选中项目中引入的dll,鼠标右键,选择属性,把“嵌入互操作类型” ...
- JAVA Stop The World 第八节
JAVA Stop The World 第八节 小伙伴还记得上一篇中我们留下的一个问题吗?什么是停顿类型!经过上几章的学习,我们知道垃圾回收首先是要经过标记的.对象被标记后就会根据不同的区域采用不同的 ...
- jquery ajax调用
client: <script type="text/javascript" language="javascript"> function jqu ...
- 如何在MyEclipse中部署struts2的环境
总记不住一些部署struts2框架的细节,下面就做一个总结:其实很简单,只要几步:1.下载的strutsXXX(版本号)-zip文件中解压app目录中有一个struts2-blank.war文件,解压 ...