lightoj1010【LCS】
题意:
求最长公共子序列,并且这个子序列是字典序最小。
思路:
LCS附一个值,dp[i][j].first代表以i,j的LCS的长度,dp[i][j].second代表LCS结尾元素,然后利用路径输出就好了;
竖着传就是1,横着就是-1,斜对角就是0;
然后就wa掉了。。。因为单一的判断结尾肯定不行啊,要判断这个满足的串;
138885777
15738
所以second为整个串;所以不需要路径记录了;
直接输出dp[L1][L2].second就好了;
#include <bits/stdc++.h>
using namespace std;
typedef long long LL; const int N=1e2+10;
const int INF=0x3f3f3f3f; int len1,len2;
char s1[N],s2[N];
struct asd{
int first;
string second;
};
asd dp[N][N]; void LCS()
{
for(int i=0;i<=len1;i++)
for(int j=0;j<=len2;j++)
{
dp[i][j].first=0;
dp[i][j].second="";
}
for(int i=1;i<=len1;i++)
{
for(int j=1;j<=len2;j++)
{
if(s1[i]==s2[j])
{
dp[i][j].first=dp[i-1][j-1].first+1;
dp[i][j].second=dp[i-1][j-1].second;
dp[i][j].second+=s1[i];
}
else
{
if(dp[i-1][j].first>dp[i][j-1].first)
{
dp[i][j].first=dp[i-1][j].first;
dp[i][j].second=dp[i-1][j].second;
}
else if(dp[i-1][j].first<dp[i][j-1].first)
{
dp[i][j].first=dp[i][j-1].first;
dp[i][j].second=dp[i][j-1].second;
}
else if(dp[i-1][j].first==dp[i][j-1].first)
{
if(dp[i-1][j].second<dp[i][j-1].second)
{
dp[i][j].first=dp[i-1][j].first;
dp[i][j].second=dp[i-1][j].second;
}
else
{
dp[i][j].first=dp[i][j-1].first;
dp[i][j].second=dp[i][j-1].second;
}
}
}
}
}
if(!dp[len1][len2].first)
{
printf(":(\n");
return;
}
cout<<dp[len1][len2].second<<endl;
} int main()
{
int T,cas=1;
scanf("%d",&T);
while(T--)
{
scanf("%s%s",s1+1,s2+1);
len1=strlen(s1+1);
len2=strlen(s2+1);
printf("Case %d: ",cas++);
LCS();
}
return 0;
}
lightoj1010【LCS】的更多相关文章
- 【线型DP】【LCS】洛谷P4303 [AHOI2006]基因匹配
P4303 [AHOI2006]基因匹配 标签(空格分隔): 考试题 nt题 LCS优化 [题目] 卡卡昨天晚上做梦梦见他和可可来到了另外一个星球,这个星球上生物的DNA序列由无数种碱基排列而成(地球 ...
- POJ 2250 Compromise【LCS】+输出路径
题目链接:https://vjudge.net/problem/POJ-2250 题目大意:给出n组case,每组case由两部分组成,分别包含若干个单词,都以“#”当结束标志,要求输出最长子序列. ...
- poj 1159 Palindrome 【LCS】
任意门:http://poj.org/problem?id=1159 解题思路: LCS + 滚动数组 AC code: #include <cstdio> #include <io ...
- hdoj 1159 Common Subsequence【LCS】【DP】
Common Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- 【线型DP】【LCS】UVA_10635 Prince and Princess
嘤嘤嘤,我又来了,刚A完就写,这个沙雕题有丶恶心. ???时间4.11发现所有表情包都莫得了 题目: In an n×n chessboard, Prince and ...
- poj 1458 Common Subsequence【LCS】
Common Subsequence Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 43132 Accepted: 17 ...
- HDU1069_Monkey and Banana【LCS】
Monkey and Banana Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- HDU 1503【LCS】(字符串合并输出)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1503 题目大意: 给两个字符串,组成一个长度尽可能小的字符串,它包含上述两个字符串,且原字符串中的字符 ...
- 51Nod-1006【LCS】+【输出路径】模板题
题目链接:https://vjudge.net/contest/225715#problem/B 转载于>>> 题目大意: 给出两个序列,要求输出它们的最长公共子序列. 解题思路: ...
随机推荐
- windows常用快捷键(转载)
f1 显示当前程序或者windows的帮助内容. f2 当你选中一个文件的话,这意味着“重命名” f3 当你在桌面上的时候是打开“查找:所有文件” 对话框 f10或alt 激活当前程序的菜单栏 win ...
- 【TensorFlow-windows】(三) 多层感知器进行手写数字识别(mnist)
主要内容: 1.基于多层感知器的mnist手写数字识别(代码注释) 2.该实现中的函数总结 平台: 1.windows 10 64位 2.Anaconda3-4.2.0-Windows-x86_64. ...
- android启动另一应用
http://www.2cto.com/kf/201203/122910.html Android SDK中有这样一个API: public abstract Intent getLaunchInte ...
- 怎样得到QML package的具体API接口
虽然我们的developer站点有丰富的API介绍,可是,有些API的介绍可能并不全,有些API也在不断地演进中. 为了得到更具体的API,我们能够通过例如以下的命令来得到更加具体的信息.比方我们对& ...
- EasyDarwin云存储方案调研:海康萤石云采用的是MPEG-PS打包的方式进行的存储
EasyDarwin开源流媒体服务器项目在直播功能稳定和完善之后,开始涉及服务器端存储与回放功能的调研与开发,当然,这里就要研究一下行业标杆萤石云是怎么来做的,我们通过非常复杂的流程将萤石存储的录像文 ...
- mysql学习之基础知识
一.什么是数据库 一般而言,数据库(Database)是按照数据结构来组织.存储和管理数据的仓库.我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢.所以,使用关系型数据库管理系统(RDB ...
- vim学习之以退为进——可反复移动和可反复改动的美妙结合
时间:2014.06.29 地点:基地 -------------------------------------------------------------------------------- ...
- mtk6589显示子系统笔记(一)
拿到MT6589的版本不久,发现显示系统代码结构改变很大.做些备忘,后续不忙的时候可以继续看. MT6589之前的MTK的Android系统显示系统同featurePhone基本一致. 先来回顾下MT ...
- kernel中对文件的读写【学习笔记】【原创】
/*1. 头文件 */ #include <linux/init.h> #include <linux/module.h> #include <linux/modulep ...
- SpringMVC ajax技术无刷新文件上传下载删除示例
参考 Spring MVC中上传文件实例 SpringMVC结合ajaxfileupload.js实现ajax无刷新文件上传 Spring MVC 文件上传下载 (FileOperateUtil.ja ...