HDU 1503 带回朔路径的最长公共子串
http://acm.hdu.edu.cn/showproblem.php?pid=1503
这道题又WA了好几次
在裸最长公共子串基础上加了回溯功能,就是给三种状态各做一个
不同的标记。dp[n][m]开始回找,找到这条最长串的组成。
WA点有几个都被我遇到了
一个是最长公共串为0时,两个串直接输出
一个是最长公共串为1时,后续串的处理
这里要记得是dp回溯的方式
- #include<iostream>
- #include<cstdio>
- #include<algorithm>
- #include<string>
- #include<stack>
- #include<cstring>
- using namespace std;
- struct donser
- {
- int x,y;
- };
- int main()
- {
- string s,t;
- while(cin>>s>>t)
- {
- int i,j,m=,n=,a1,b1,a2,b2;
- stack<donser> sta;
- struct donser dong;
- struct donser dongs;
- int dp[][],lable[][];
- n=s.length();
- m=t.length();
- for(i=;i<n;i++)
- {
- for(j=;j<m;j++)
- {
- if(s[i]==t[j])
- {
- dp[i+][j+]=dp[i][j]+;
- lable[i+][j+]=;
- }
- else
- {
- if(dp[i][j+]>dp[i+][j])
- {
- dp[i+][j+]=dp[i][j+];
- lable[i+][j+]=;
- }
- else
- {
- dp[i+][j+]=dp[i+][j];
- lable[i+][j+]=;
- }
- }
- }
- }
- i=n;j=m;a1=a2=n;b1=b2=m;
- if(dp[n][m]==){cout<<s<<t<<endl;}
- else{
- while(lable[i][j]!=)
- {
- if(lable[i][j]==)
- {
- i--;j--;
- dong.x=i;
- dong.y=j;
- sta.push(dong);
- }
- else if(lable[i][j]==)
- {
- i--;
- }
- else if(lable[i][j]==)
- {
- j--;
- }
- }
- if(sta.empty()!=)
- {
- dong=sta.top();
- sta.pop();
- a1=dong.x;
- b1=dong.y;
- for(i=;i<a1;i++)
- {
- cout<<s[i];
- }
- for(i=;i<b1;i++)
- {
- cout<<t[i];
- }
- }
- if(sta.empty()==)
- {
- for(i=a1;i<n;i++)
- {
- cout<<s[i];
- }
- for(i=b1+;i<m;i++)
- {
- cout<<t[i];
- }
- }
- while(sta.empty()!=)
- {
- a1=dong.x;
- b1=dong.y;
- dongs=sta.top();
- sta.pop();
- a2=dongs.x;
- b2=dongs.y;
- for(i=a1;i<a2;i++)
- {
- cout<<s[i];
- }
- for(j=b1+;j<b2;j++)
- {
- cout<<t[j];
- }
- dong=dongs;
- }
- for(i=a2;i<n;i++)
- {
- cout<<s[i];
- }
- for(i=b2+;i<m;i++)
- {
- cout<<t[i];
- }
- cout<<endl;}
- }
- return ;
- }
HDU 1503 带回朔路径的最长公共子串的更多相关文章
- HDU 1403 Longest Common Substring(最长公共子串)
http://acm.hdu.edu.cn/showproblem.php?pid=1403 题意:给出两个字符串,求最长公共子串的长度. 思路: 刚开始学后缀数组,确实感觉很难,但是这东西很强大,所 ...
- HDU 1403 Longest Common Substring(后缀数组,最长公共子串)
hdu题目 poj题目 参考了 罗穗骞的论文<后缀数组——处理字符串的有力工具> 题意:求两个序列的最长公共子串 思路:后缀数组经典题目之一(模版题) //后缀数组sa:将s的n个后缀从小 ...
- HDU 1423 Greatest Common Increasing Subsequence(最长公共上升LCIS)
HDU 1423 Greatest Common Increasing Subsequence(最长公共上升LCIS) http://acm.hdu.edu.cn/showproblem.php?pi ...
- 动态规划(一)——最长公共子序列和最长公共子串
注: 最长公共子序列采用动态规划解决,由于子问题重叠,故采用数组缓存结果,保存最佳取值方向.输出结果时,则自顶向下建立二叉树,自底向上输出,则这过程中没有分叉路,结果唯一. 最长公共子串采用参考串方式 ...
- DP:LCS(最长公共子串、最长公共子序列)
1. 两者区别 约定:在本文中用 LCStr 表示最长公共子串(Longest Common Substring),LCSeq 表示最长公共子序列(Longest Common Subsequence ...
- 最长公共子序列&最长公共子串
首先区别最长公共子串和最长公共子序列 LCS(计算机科学算法:最长公共子序列)_百度百科 最长公共子串,这个子串要求在原字符串中是连续的.而最长公共子序列则并不要求连续. 最长公共子序列: http ...
- BZOJ 2946 POI2000 公共串 后缀自动机(多串最长公共子串)
题意概述:给出N个字符串,每个串的长度<=2000(雾...可能是当年的年代太久远机子太差了),问这N个字符串的最长公共子串长度为多少.(N<=5) 抛开数据结构,先想想朴素做法. 设计一 ...
- [Data Structure] LCSs——最长公共子序列和最长公共子串
1. 什么是 LCSs? 什么是 LCSs? 好多博友看到这几个字母可能比较困惑,因为这是我自己对两个常见问题的统称,它们分别为最长公共子序列问题(Longest-Common-Subsequence ...
- 最长公共子序列PK最长公共子串
1.先科普下最长公共子序列 & 最长公共子串的区别: 找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的.而最长公共子序列则并不要求连续. (1)递归方法求最长公共子序列的长度 1) ...
随机推荐
- Python capitalize()方法
Python capitalize()方法 capitalize()方法返回字符串的一个副本,只有它的第一个字母大写.对于8位的字符串,这个方法与语言环境相关. 语法 以下是capitalize()方 ...
- LaTex 使用 - 配置
Reference Link: http://www.howtotex.com/howto/installing-latex-on-windows/ MikTeX:http://miktex.org/ ...
- C++ Scripting
http://www.quepublishing.com/articles/article.aspx?p=26069
- php构造函数extends
extends的继续关系 page继承Dapta:也就是page拥有data的所有功能. <?php class Data{ function f(){ "; } } class Pa ...
- JavaScript 函数参数传递到底是值传递还是引用传递
tips:这篇文章是听了四脚猫的js课程后查的,深入的理解可以参看两篇博客: JavaScript数据类型--值类型和引用类型 JavaScript数据操作--原始值和引用值的操作本质 在传统的观念里 ...
- org.apache.http.client.HttpClient; HttpClient 4.3超时设置
可用的code import org.apache.commons.lang.StringUtils;import org.apache.http.HttpEntity;import org.apac ...
- ImageTragick Exploit & Fix
ImageMagick是一款广泛流行的图像处理软件,有无数的网站(国内国外都有)使用它来进行图像处理,本周二,ImageMagick披露出了一个严重的0day漏洞,此漏洞允许攻击者通过上传恶意构造的图 ...
- Python之路【第五篇续】:面向对象编程二
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABgQAAALaCAIAAABxja8cAAAgAElEQVR4nOzd6X9Tdd74/+uv+f5uzF
- asp.net mvc中在使用async的时候HttpContext为null的问题
摘要 HttpContext上下文并不是无处不在的.详情可以看下Fish Li的文章,解释的比较清楚. HttpContext.Current并非无处不在 问题复现 public async Task ...
- fedora14 安装中文输入法
We trust you have received the usual lecture (n. 演讲 讲课 讲座; 教训 训斥 告诫) from the local SystemAdministra ...