POJ 2250 Compromise (UVA 531)
LCS问题。基金会DP。
我很伤心WA非常多。就在LCS问题,需要记录什么路。
反正自己的纪录path错误,最后,就容易上当。
没有优化,二维阵列,递归打印,cin.eof() 来识别 end of file 标识。
至于单词用map 映射的。
事实上也用不着,直接二维string或者 二维char 然后strcmp 也行。
Special Judge
交 UVA 531 奇怪的PE了。
。。 然后改成 flag 标记 输出 空格。最终都AC了。
#include<cstdio>
#include<cstring>
#include<string>
#include<queue>
#include<algorithm>
#include<map>
#include<stack>
#include<iostream>
#include<list>
#include<set>
#include<bitset>
#include<vector>
#include<cmath> #define INF 0x7fffffff
#define eps 1e-8
#define LL long long
#define PI 3.141592654
#define CLR(a,b) memset(a,b,sizeof(a))
#define FOR(i,a,b) for(int i=a;i<b;i++)
#define FOR_(i,a,b) for(int i=a;i>=b;i--)
#define pb push_back
#define mp make_pair
#define ft first
#define sd second
#define sf scanf
#define pf printf
#define sz(v) ((int)(v).size())
#define all(v) (v).begin(),(v).end()
#define acfun std::ios::sync_with_stdio(false) #define SIZE 1000 +1
using namespace std; int a[SIZE],b[SIZE];
int dp[SIZE][SIZE];
int path[SIZE][SIZE];
map<string,int>word;
map<int,string>exword;
bool flag;
void print(int i,int j)
{
if(i>0&&j>0)
{
if(path[i][j]==0)
{
print(i-1,j-1);
if(flag)
cout<<" ";
else
flag=1;
cout<<exword[a[i-1]];
}
else if(path[i][j]==1)
print(i-1,j);
else if(path[i][j]==-1)
print(i,j-1);
}
}
int main()
{
acfun;
while(1)
{
string tmp;
word.clear();
int cot=1;
int la=0,lb=0;
flag=0;
while(1)
{
cin>>tmp;
if(cin.eof())return 0;
if(tmp=="#")break;
if(word[tmp]==0)
{
word[tmp]=cot++;
exword[cot-1]=tmp;
}
a[la++]=word[tmp];
}
while(1)
{
cin>>tmp;
if(tmp=="#")break;
if(word[tmp]==0)
{
word[tmp]=cot++;
exword[cot-1]=tmp;
}
b[lb++]=word[tmp];
}
FOR(i,0,la)
FOR(j,0,lb)
{
if(a[i]==b[j])
{
dp[i+1][j+1]=dp[i][j]+1;
path[i+1][j+1]=0;
}
else
{
if(dp[i+1][j]>=dp[i][j+1])
{
dp[i+1][j+1]=dp[i+1][j];
path[i+1][j+1]=-1;
}
else
{
dp[i+1][j+1]=dp[i][j+1];
path[i+1][j+1]=1;
}
}
}
//cout<<dp[la][lb]<<endl;
print(la,lb);
cout<<endl;
}
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
POJ 2250 Compromise (UVA 531)的更多相关文章
- POJ - 2250 Compromise (LCS打印序列)
题意:给你两个单词序列,求出他们的最长公共子序列. 多组数据输入,单词序列长度<=100,单词长度<=30 因为所有组成LCS的单词都是通过 a[i] == b[j] 更新的. 打印序列的 ...
- POJ 2250 Compromise(LCS)
POJ 2250 Compromise(LCS)解题报告 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87125#proble ...
- POJ 3279 Fliptile(翻格子)
POJ 3279 Fliptile(翻格子) Time Limit: 2000MS Memory Limit: 65536K Description - 题目描述 Farmer John kno ...
- POJ - 3308 Paratroopers(最大流)
1.这道题学了个单词,product 还有 乘积 的意思.. 题意就是在一个 m*n的矩阵中,放入L个敌军的伞兵,而我军要在伞兵落地的瞬间将其消灭.现在我军用一种激光枪组建一个防御系统,这种枪可以安装 ...
- POJ 1274 The Perfect Stall || POJ 1469 COURSES(zoj 1140)二分图匹配
两题二分图匹配的题: 1.一个农民有n头牛和m个畜栏,对于每个畜栏,每头牛有不同喜好,有的想去,有的不想,对于给定的喜好表,你需要求出最大可以满足多少头牛的需求. 2.给你学生数和课程数,以及学生上的 ...
- POJ 1015 Jury Compromise(dp坑)
提议:在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定.陪审团是由法官从公众中挑选的.先随机挑选n个人作为陪审团的候选人,然后再从这n个人中选m人组成陪审团.选m人的办法是:控方和辩方会根据对候选 ...
- POJ 3259 Wormholes (Bellman_ford算法)
题目链接:http://poj.org/problem?id=3259 Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submis ...
- POJ 1006 Biorhythms (中国剩余定理)
在POJ上有译文(原文右上角),选择语言:简体中文 求解同余方程组:x=ai(mod mi) i=1~r, m1,m2,...,mr互质利用中国剩余定理令M=m1*m2*...*mr,Mi=M/mi因 ...
- poj 1364 King(差分约束)
题意(真坑):傻国王只会求和,以及比较大小.阴谋家们想推翻他,于是想坑他,上交了一串长度为n的序列a[1],a[2]...a[n],国王作出m条形如(a[si]+a[si+1]+...+a[si+ni ...
随机推荐
- 用Python制作游戏外挂(上)
源地址:http://eyehere.net/2012/python-game-bot-autopy-1/ 悲剧成我这样的人,我知道肯定不止我一个,所以我一点都不悲伤:-( 所以我打开了4399小游戏 ...
- ThinkPhp学习07
原文:ThinkPhp学习07 简单CRUD操作 public function show() { $m=M('User'); // $arr=$m->find(2); //查找id=2的数据, ...
- Referer反反盗链
0x00 前言 最近用Python非常多,确实感受到了Python的强大与便利.但同时我并没有相见恨晚的感觉,相反我很庆幸自己没有太早接触到Python,而是基本按着C→C++→Java→Python ...
- CreateThread、_beginthreadex和AfxBeginThread 的区别
CreateThread._beginthreadex和AfxBeginThread 创建线程好几个函数可以使用,可是它们有什么区别,适用于什么情况呢?参考了一些资料,写得都挺好的,这里做一些摘抄和整 ...
- Xsoup 是一款基于 Jsoup 开发的
Xsoup 是一款基于Jsoup 开发的,使用XPath抽取Html元素的工具.它被用于作者的爬虫框架 WebMagic 中,进行XPath 解析和抽取. 此次更新主要增加了一些XPath语法的支持. ...
- Amazon.com : The Odyssey of the Manual Toothbrusher
Amazon.com : The Odyssey of the Manual Toothbrusher The Odyssey of the Manual Toothbrusher
- jQuery 自学笔记—5 遍历
什么是遍历? jQuery 遍历,意为“移动”,用于根据其相对于其他元素的关系来“查找”(或选取)HTML 元素.以某项选择开始,并沿着这个选择移动,直到抵达您期望的元素为止. 下图展示了一个家族树. ...
- ARM体系结构与编程
ARM处理器的7中执行模式:usr.fiq.irq.svc.abt.und.sys. ARM处理器共37个寄存器:31个通用寄存器(未备份寄存器R0-R7,在全部模式下指的都是同一个物理寄存器:备份寄 ...
- Inno Setup打包添加和去除管理员权限
原文:Inno Setup打包添加和去除管理员权限 添加管理员权限 1.在[Setup]节点添加 PrivilegesRequired=admin 2.进入安装目录,找到文件SetupLdr.e32, ...
- Python-Tkinter的Entry详解
#Tkinter教程之Entry篇 #Entry用来输入单行文本 '''1.第一个Entry程序''' from Tkinter import * root = Tk() Entry(root,tex ...