当前位置: 首页 > news >正文

HDU-1503 Advanced Fruits(LCS)

题意:

给两个字符串,让你寻找一个最短的字符串,满足其子序列能够构成这两个字符串。

思路:

简单lcs,求出最长公共子序列之后,将两个串构造在一起即可。

代码:

#include <bits/stdc++.h>
using namespace std;
char s1[105], s2[105];
int len1, len2;
string ans, tmp;
int dp[105][105];
bool col[2][105];
void lcs()
{
	memset(dp, 0, sizeof dp);
	memset(col, 0, sizeof col); 
	for(int i = 1; i <= len1; ++i)
	for(int j = 1; j <= len2; ++j)
	{
		if(s1[i] == s2[j])
		dp[i][j] = dp[i-1][j-1]+1;
		else 
		dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
	}
	int x = len1, y = len2;
	while(x && y)
	{
		if(s1[x] == s2[y])
		{
			col[0][x] = 1;
			col[1][y] = 1;
			--x, --y;
		}
		else if(dp[x-1][y] > dp[x][y-1])
		--x;
		else
		--y;
	}
}
int main()
{
	while(cin >> s1+1 && cin >> s2+1)
	{
		len1 = strlen(s1+1);
		len2 = strlen(s2+1);
		lcs();
		ans = "";
		int x = 1, y = 1;
		while(1)
		{
			tmp = "";
			while(x <= len1 && !col[0][x])
			tmp += s1[x++];
			ans += tmp;
			tmp = "";
			while(y <= len2 && !col[1][y])
			tmp += s2[y++];
			ans += tmp;
			if(x > len1 && y > len2) break;
			ans += s1[x];
			++x, ++y;
		}
		cout << ans << endl;
	}
	return 0;
}


继续加油~

相关文章:

  • LightOJ-1253 Misere Nim(Nim求解不正常的博弈)
  • python发送电子邮件模块smtplib
  • uva-1349 Optimal Bus Route Design(最小费用最大流)
  • 一个简单的通用验证类的实现
  • ZOJ-3987 Numbers 2017CCPC秦皇岛站G题 (二进制乱搞、贪心)
  • iOS开发-类簇(Class Cluster)
  • HDU-1350 Taxi Cab Scheme(最小路径覆盖)
  • codeforces-884D Boxes And Balls(思维、三叉哈夫曼树)
  • 设置c++程序的堆栈空间解决栈溢出问题
  • POJ-1932 XYZZY(判正权环路+Warlshell传递闭包)
  • Codeforces 827C DNA Evolution(多维树状数组)
  • larbin是一种开源的网络爬虫/网络蜘
  • Codeforces 855E Salazar Slytherin's Locket(数位dp)
  • JAVA爬虫 WebCollector
  • HDU-6215 Brute Force Sorting(思维、模拟链表)
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Android框架之Volley
  • happypack两次报错的问题
  • Java Agent 学习笔记
  • Javascript Math对象和Date对象常用方法详解
  • opencv python Meanshift 和 Camshift
  • Python 反序列化安全问题(二)
  • spring-boot List转Page
  • vue2.0项目引入element-ui
  • yii2中session跨域名的问题
  • 从PHP迁移至Golang - 基础篇
  • 从伪并行的 Python 多线程说起
  • 基于HAProxy的高性能缓存服务器nuster
  • 聚簇索引和非聚簇索引
  • 聊聊flink的TableFactory
  • 用Canvas画一棵二叉树
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (5)STL算法之复制
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (一)基于IDEA的JAVA基础12
  • (转)ABI是什么
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .net 调用php,php 调用.net com组件 --
  • @Autowired注解的实现原理
  • @staticmethod和@classmethod的作用与区别
  • [04] Android逐帧动画(一)
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured
  • [C/C++]关于C++11中的std::move和std::forward
  • [CSS3备忘] transform animation 等
  • [IE技巧] 如何关闭Windows Server版IE的安全限制
  • [JavaWeb学习] idea新建web项目
  • [LeetCode] 93. Restore IP Addresses 复原IP地址
  • [LeetCode] Ransom Note 赎金条