题解报告:hdu 1503 Advanced Fruits(LCS加强版)
Problem Description
A big topic of discussion inside the company is "How should the new creations be called?" A mixture between an apple and a pear could be called an apple-pear, of course, but this doesn't sound very interesting. The boss finally decides to use the shortest string that contains both names of the original fruits as sub-strings as the new name. For instance, "applear" contains "apple" and "pear" (APPLEar and apPlEAR), and there is no shorter string that has the same property.
A combination of a cranberry and a boysenberry would therefore be called a "boysecranberry" or a "craboysenberry", for example.
Your job is to write a program that computes such a shortest name for a combination of two given fruits. Your algorithm should be efficient, otherwise it is unlikely that it will execute in the alloted time for long fruit names.
Input
Input is terminated by end of file.
Output
Sample Input
Sample Output
#include<bits/stdc++.h>
using namespace std;
const int maxn=;
char s1[maxn],s2[maxn];
int len1,len2,dp[maxn][maxn],mp[maxn][maxn];
void print_LCS(int i,int j){
if(!i&&!j)return;//如果i,j都为0,则直接返回
else if(mp[i][j]==-){print_LCS(i-,j);putchar(s1[i]);}
else if(mp[i][j]==){print_LCS(i-,j-);putchar(s1[i]);}
else {print_LCS(i,j-);putchar(s2[j]);}
}
int main(){
while(~scanf("%s%s",s1+,s2+)){
memset(dp,,sizeof(dp));
memset(mp,,sizeof(mp));//初始状态默认两个字符串是相等的
len1=strlen(s1+),len2=strlen(s2+);
for(int i=;i<=len1;++i)mp[i][]=-;
for(int j=;j<=len2;++j)mp[][j]=;
for(int i=;i<=len1;++i){
for(int j=;j<=len2;++j){
if(s1[i]==s2[j])dp[i][j]=dp[i-][j-]+;
else if(dp[i-][j]>=dp[i][j-])dp[i][j]=dp[i-][j],mp[i][j]=-;
else dp[i][j]=dp[i][j-],mp[i][j]=;
}
}
print_LCS(len1,len2);
puts("");
}
return ;
}
题解报告:hdu 1503 Advanced Fruits(LCS加强版)的更多相关文章
- hdu 1503 Advanced Fruits(LCS输出路径)
Problem Description The company "21st Century Fruits" has specialized in creating new sort ...
- HDU 1503 Advanced Fruits (LCS,变形)
题意: 给两个水果名,要求他们的LCS部分只输出1次,其他照常输出,但是必须保持原来的顺序! 思路: 求LCS是常规的,但是输出麻烦了,要先求LCS,再标记两串中的所有LCS字符,在遇到LCS字符时, ...
- hdu 1503:Advanced Fruits(动态规划 DP & 最长公共子序列(LCS)问题升级版)
Advanced Fruits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- 最长公共子序列(加强版) Hdu 1503 Advanced Fruits
Advanced Fruits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- hdu 1503 Advanced Fruits(最长公共子序列)
Advanced Fruits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- hdu 1503 Advanced Fruits 最长公共子序列 *
Advanced Fruits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDU 1503 Advanced Fruits(LCS+记录路径)
http://acm.hdu.edu.cn/showproblem.php?pid=1503 题意: 给出两个串,现在要确定一个尽量短的串,使得该串的子串包含了题目所给的两个串. 思路: 这道题目就是 ...
- HDU 1503 Advanced Fruits (LCS+DP+递归)
题意:给定两个字符串,让你求一个最短的字符串,并且这个字符串包含给定的两个. 析:看到这个题,我知道是DP,但是,不会啊...完全没有思路么,我就是个DP渣渣,一直不会做DP. 最后还是参考了一下题解 ...
- hdu 1503 Advanced Fruits
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1503 思路:这是一道最长公共子序列的题目,当然还需要记录路径.把两个字符串的最长公共字串记录下来,在递 ...
随机推荐
- [正在学习开发板]分享--- iTOP-4412移植CAN
首先拷贝迅为提供的 libcanjni.tar.gz 压缩包到 android 源代码的"iTop4412_ICS/device/samsung/common"文件夹以下,然后使用 ...
- XP 系统如何安装.NET Framework4.0
1 运行CMD,然后输入命令net stop WuAuServ 2 打开C盘的Windows目录,然后找到SoftwareDistribution文件夹改名为SDold. 3 在CMD窗口中输 ...
- 安装和配置Apache-tomcat
https://tomcat.apache.org/download-90.cgi 我随便下载了一个,而且解压了 我把路径:G:\php\apache-tomcat-9.0.6\bin 放入path, ...
- MIT 操作系统实验 MIT JOS lab1
JOS lab1 首先向MIT还有K&R致敬! 没有非常好的开源环境我不可能拿到这么好的东西. 向每个与我一起交流讨论的programmer致谢!没有道友一起死磕.我也可能会中途放弃. 跟丫死 ...
- java数据库连接池技术简单使用
JDBCDemo.java: package com.itheima.jdbc; import java.sql.Connection; import java.sql.PreparedStateme ...
- Memcache应用场景介绍
面临的问题 对于高并发高訪问的Web应用程序来说,数据库存取瓶颈一直是个令人头疼的问题.特别当你的程序架构还是建立在单数据库模式,而一个数据池连接数峰 值已经达到500的时候,那你的程序执行离崩溃的边 ...
- 【Mongodb教程 第八课 】MongoDB 更新文档
MongoDB的 update() 和 save() 方法用于更新文档的集合. update()方法更新现有的文档值,而替换现有的文档通过的文件中 save() 方法. MongoDB Update( ...
- JSONObjectWithData方法里options參数选择解释
NSJSONReadingMutableContainers Specifies that arrays and dictionaries are created as mutable object ...
- LeetCode题解汇总
陆续更新至github... https://github.com/OliveLv/LeetCode/
- 使用7zip压解各种文件的经常使用命令
7zip简单介绍 格式支持 压缩解压缩 仅支持解压缩 安装 Debian Ubuntu ArchLinux 使用 打包 解压 列出文件的信息列表 检查包的完整性 更新压缩包 删除包里的文件 7zip简 ...