hdoj-1503 (LCS解的输出)
2024-08-29 07:26:42
题目链接
回溯输出解
#include <bits/stdc++.h>
using namespace std;
const int N=;
int dp[N][N],dir[N][N];
char s1[N],s2[N];
int n1,n2;
void m_printf (int x,int y) {
if (x<=||y<=) {
for (int i=;i<=x;i++)
putchar(s1[i]);
for (int i=;i<=y;i++)
putchar(s2[i]);
return ;
}
if (dir[x][y]==) {
m_printf(x-,y-);
putchar (s1[x]);
}
else if (dir[x][y]>) {
m_printf(x-,y);
putchar (s1[x]);
}
else {
m_printf(x,y-);
putchar (s2[y]);
}
return ;
}
int main ()
{
while (~scanf (" %s %s",s1+,s2+)) {
memset (dp,,sizeof(dp));
int n1=strlen(s1+);
int n2=strlen(s2+);
for (int i=;i<=n1;i++)
for (int j=;j<=n2;j++) {
if (s1[i]==s2[j]) {
dir[i][j]=;
dp[i][j]=dp[i-][j-]+;
}
else if (dp[i-][j]>dp[i][j-]) {
dir[i][j]=;
dp[i][j]=dp[i-][j];
}
else {
dir[i][j]=-;
dp[i][j]=dp[i][j-];
}
}
// printf("%d\n",dp[n1][n2]);
m_printf(n1,n2);
printf("\n");
}
return ;
}
最新文章
- 禁止uiscrollview垂直方向滚动,只允许水平方向滚动;或只允许垂直方向滚动
- 使用Struts 2框架实现文件下载
- 初学hibernate之缓存
- react-amazeui-touch 妹子Ui移动端学习
- 路由器开发板上的TTL线连接方法
- HTTPS 升级指南
- phpstorm运行在浏览器中执行php文件报502错误
- WCF - 消息
- expected function body after function declarator
- 二分-poj-3685-Matrix
- 滚动条QScroolBar实现滚屏功能(屏幕过大,覆盖wheelEvent来处理滑轮事件)
- Git——git 上传时 遗漏文件解决办法
- SUPPORTDIR引用的文件的加入
- highcharts柱状图和饼图的数据填充
- 函数的上下文就是函数里面的this是谁
- java学习总结篇二--3 种简单排序
- python第二篇博客,关于数据类型的详细讲解
- 使用MediatR重构单体应用中的事件发布/订阅
- leetcode338
- Android避免OOM(内存优化)