UVA11404:Palindromic Subsequence
回文子串dp,最小字典序的话需要记录一下,注意是string型的,不能只记录一个字符,因为可能出现相等的情况
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<string>
#define len first
#define str second
#define MAXN 1005
#define pii pair<int,int>
#define pis pair<int,string>
using namespace std;
pis dp[MAXN][MAXN];
pii g[MAXN][MAXN];
int n;
char s[MAXN];
int b[MAXN][MAXN];
int p[MAXN];
string e;
pis f(int L,int R){
if(b[L][R]){
return dp[L][R];
}
b[L][R]=;
pis& ans=dp[L][R];
if(L>R){
return ans=make_pair(,e);
}
if(L==R){
g[L][R]=make_pair(-,-);
string t(,s[L]);
return ans=make_pair(,t);
}
ans.len=-,ans.str=-;
if(s[L]==s[R]){
ans=f(L+,R-);
string t(,s[L]);t+=ans.str;
ans.len+=,ans.str=t;
if(L+<R)g[L][R]=make_pair(L+,R-);
else g[L][R]=make_pair(-,-);
}
if(ans<f(L,R-)){
ans=f(L,R-);
g[L][R]=make_pair(L,R-);
}
if(ans<f(L+,R)){
ans=f(L+,R);
g[L][R]=make_pair(L+,R);
}
return ans;
}
void print(int L,int R){
if(g[L][R]==make_pair(-,-)){
p[L]=p[R]=;
return;
}
if(g[L][R].first==L+&&g[L][R].second==R-){
p[L]=p[R]=;
}
print(g[L][R].first,g[L][R].second);
}
int main()
{
// freopen("data.in","r",stdin);
// freopen("my.out","w",stdout);
while(~scanf("%s",s+)){
memset(b,,sizeof(b));
memset(p,,sizeof(p));
n=strlen(s+);
for(int i=;i<=n;i++){
s[i]=-s[i];
}
f(,n);
print(,n);
for(int i=;i<=n;i++){
if(p[i])printf("%c",-s[i]);
}
printf("\n");
}
return ;
}
UVA11404:Palindromic Subsequence的更多相关文章
- UVA 11404 Palindromic Subsequence[DP LCS 打印]
UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...
- [leetcode-516-Longest Palindromic Subsequence]
Given a string s, find the longest palindromic subsequence's length in s. You may assume that the ma ...
- [LeetCode] Longest Palindromic Subsequence 最长回文子序列
Given a string s, find the longest palindromic subsequence's length in s. You may assume that the ma ...
- [Swift]LeetCode516. 最长回文子序列 | Longest Palindromic Subsequence
Given a string s, find the longest palindromic subsequence's length in s. You may assume that the ma ...
- 516. Longest Palindromic Subsequence最长的不连续回文串的长度
[抄题]: Given a string s, find the longest palindromic subsequence's length in s. You may assume that ...
- [Leetcode] Longest Palindromic Subsequence
Longest Palindromic Subsequence 题解 题目来源:https://leetcode.com/problems/longest-palindromic-subsequenc ...
- LPS UVA 11404 Palindromic Subsequence
题目传送门 题意:求LPS (Longest Palidromic Subsequence) 最长回文子序列.和回文串不同,子序列是可以不连续的. 分析:1. 推荐->还有一种写法是用了LCS的 ...
- UVA 11404 Palindromic Subsequence
Palindromic Subsequence Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVA ...
- [LeetCode] 516. Longest Palindromic Subsequence 最长回文子序列
Given a string s, find the longest palindromic subsequence's length in s. You may assume that the ma ...
随机推荐
- 个人作业2——NBA 2k18案例分析
产品:篮球体育类游戏NBA 2k18 选择理由:这款游戏是<NBA 2k>的正统续作,自己和身边的朋友都对篮球比较感兴趣,经常看NBA,所以近几年的版本都有购买下载,加上游戏中人物动作比较 ...
- python 使用Nginx和uWSGI来运行Python应用
参考:http://zmrenwu.com/post/20/ uWSGI是一个Web应用服务器,它具有应用服务器,代理,进程管理及应用监控等功能.它支持WSGI协议,同时它也支持自有的uWSGI协议, ...
- 算法第四版 coursera公开课 普林斯顿算法 ⅠⅡ部分 Robert Sedgewick主讲《Algorithms》
这是我在网上找到的资源,下载之后上传到我的百度网盘了. 包含两部分:1:算法视频的种子 2:字幕 下载之后,请用迅雷播放器打开,因为迅雷可以直接在线搜索字幕. 如果以下链接失效,请在下边留言,我再更新 ...
- float、absolute、inline-block三者区别
0.前言 float属性在css2中是一个热门的属性,被广泛应用于布局之中,同时由于不当使用float带来的问题也非常多,本文结合自己对float的理解以及实际项目中碰到float的相关问题,做一个详 ...
- ESP8266 wifi 模块配置,Wechat+APP控制实现
首先刷入安信可的AiCloud 2.0 SDK文件,AiCloud 2.0具体信息参见AiCloud 1.0 和AiCloud 2.0对比 APP见如下二维码下载. 1.安信可AiCloud 2.0 ...
- Mego开发文档 - 数据库建模
数据库建模 我们还提供了一些其他的特性,用于定制化数据库对应的数据结构. 表映射 框架默认会使用CLR类型名称做为实际数据库的表名,当两者不一致时可以使用该特性强制表名称. [Table(" ...
- angular2 学习笔记 ( angular cli & npm version manage npm 版本管理 )
更新 : 2017-05-05 现在流行 Yarn ! 它是 facebook google 推出的东西. 算是补助 npm 做的不够好的地方. 源码依然是发布去 npm,只是下载接口换掉罢了哦. n ...
- api-gateway实践(08)新服务网关 - 云端发布和日志查看
一.发布应用 1.新建应用空间 1.1.新建应用空间 1.2.新建应用 1.3.上传程序包 2.创建应用引擎服务 3.发布应用 3.1.为应用容器绑定Web运行环境(应用引擎服务) 3.2.发布应用( ...
- javascript学习(4)异常处理 try-catch 和 onerror
一.try-catch 1.样例1 1.1.源代码 1.2.执行后 2.样例2 2.1.源代码 2.2.执行后 二.onerror 1.源代码 2.执行后
- SpringCloud的EurekaClient : 客户端应用访问注册的微服务(有断路器场景)
演示客户端应用如何访问注册在EurekaServer里的微服务 一.概念和定义 采用Ribbon或Feign方式访问注册到EurekaServer中的微服务.1.Ribbon实现了客户端负载均衡,2. ...