HDU 1503 带回朔路径的最长公共子串
2024-10-19 16:39:55
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 ;
}
最新文章
- ISPA
- 【问题】js 改变鼠标样式,chrome浏览器不能立即更新,暂没有解决办法
- qq邮箱过滤器 + Foxmail(IMAP)
- 【Beta】第二次任务发布
- work flow
- 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单
- 解读ClassLoader
- Window下SVN命令的使用总结
- GroupId和ArtifactId
- Boost使用笔记(Smart_ptr)
- 用FusionChartsFree做饼状图、柱状图、折线图的实例
- 解决QZ-SDK静态库libRPToolLib.a中avfoundation.o文件和kxMovie依赖的ffmpeg静态库libavdevice.a函数重复定义的问题
- Javascript中几个看起来简单,却不一定会做的题
- vue全家桶安装以及修改webpack配置新增vue项目启动方式
- (一)Knockout 计算属性
- 《Whitelabel Error Page 404》 对于Springboot初学者可能出现问题的原因
- MYSQL服务器系统变量
- what&#39;s the 跨期套利
- Vue设置页面的title
- ZOJ 3955 Saddle Point
热门文章
- JavaScript学习笔记——BOM_window对象
- C++中public,protected,private派生类继承问题和访问权限问题
- ecshop Admin后台删除(Ajxa删除,无跳转连接)
- Helixoft VSdocman 是一个集成于Visual Studio并提供了命令行版本的帮助文档编译工具
- Nginx + FastCGI 程序(C/C++) 搭建高性能web service的Demo及部署发布
- PHP数组处理函数的使用array_map(三)
- TextBox 英文文档
- CocoaLumberjack
- addEventListener和on的区别
- linux的多媒体 播放 软件版权问题