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 转载于>>> 题目大意: 给出两个序列,要求输出它们的最长公共子序列. 解题思路: ...
随机推荐
- Django框架学习——python模拟Django框架(转载)
原贴来源 http://wiki.woodpecker.org.cn/moin/ObpLovelyPython/AbtWebModules python实现web服务器 web开发首先要有web服务器 ...
- 目标跟踪之meanshift---均值漂移搞起2000过时的
基于灰度均值分布的目标跟踪! http://blog.csdn.net/wds555/article/details/24499599 但他有些有点: 1.不会受遮挡太多影响 Mean Shift跟踪 ...
- gdb coredump的使用
1 出现core dump时最好的办法是使用gdb查看coredump文件 2 使用的条件 出现问题的代码,系统,所有涉及的代码都应该一起编译,然后得到符号表,这样加载符号表,使用coredump文件 ...
- Time To First Byte (TTFB) 第一字节时间 页面加载时间
Time to first byte - Wikipedia https://en.wikipedia.org/wiki/Time_to_first_byte Time to first byte ( ...
- 在VC++空工程中使用MFC类,采用Unicode字符集后,运行工程程序报错的解决方案
创建一个VC++空工程,将Project Properties->General->Use of MFC改为Use MFC in a Shared DLL 新建一个源文件,内容如下 #in ...
- 3个CCIE考官对一个高级工程师的面试题
3个CCIE考官对一个高级工程师的面试题 转载 时间:2015-7-10 原文转载: 1.现在的6509及7609,SUP720交换带宽去到720G,是不是可以说7609/6509 可以取代一部分GS ...
- codeforces B. Convex Shape 解题报告
题目链接:http://codeforces.com/problemset/problem/275/B 题目内容:给出一个n * m 大小的grid,上面只有 black 和 white 两种颜色填充 ...
- webrtc 学习资源
http://www.cnblogs.com/lingyunhu/tag/webrtc%20android%20ios/
- JAVA基础细谈
JAVA基础细谈 一. 源文件和编译后的类文件 源文件的本质就是程序文件,是程序员编写,是人看的.而编译后的类文件是给电脑看的文件.一个类就是一个文件,无论这个类写在哪里,编译以后都是一个文件 ...
- 在WinDBG中查看调用栈的命令
命令 ========== k k命令显示的是一定数量的栈帧, 其中帧的数量是由.kframes命令来控制的, 默认值是256. kp 5 显示调用栈中前5个函数以及他们的参数. kb 5 显示调用栈 ...