回文子串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的更多相关文章

  1. UVA 11404 Palindromic Subsequence[DP LCS 打印]

    UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...

  2. [leetcode-516-Longest Palindromic Subsequence]

    Given a string s, find the longest palindromic subsequence's length in s. You may assume that the ma ...

  3. [LeetCode] Longest Palindromic Subsequence 最长回文子序列

    Given a string s, find the longest palindromic subsequence's length in s. You may assume that the ma ...

  4. [Swift]LeetCode516. 最长回文子序列 | Longest Palindromic Subsequence

    Given a string s, find the longest palindromic subsequence's length in s. You may assume that the ma ...

  5. 516. Longest Palindromic Subsequence最长的不连续回文串的长度

    [抄题]: Given a string s, find the longest palindromic subsequence's length in s. You may assume that ...

  6. [Leetcode] Longest Palindromic Subsequence

    Longest Palindromic Subsequence 题解 题目来源:https://leetcode.com/problems/longest-palindromic-subsequenc ...

  7. LPS UVA 11404 Palindromic Subsequence

    题目传送门 题意:求LPS (Longest Palidromic Subsequence) 最长回文子序列.和回文串不同,子序列是可以不连续的. 分析:1. 推荐->还有一种写法是用了LCS的 ...

  8. UVA 11404 Palindromic Subsequence

    Palindromic Subsequence Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVA ...

  9. [LeetCode] 516. Longest Palindromic Subsequence 最长回文子序列

    Given a string s, find the longest palindromic subsequence's length in s. You may assume that the ma ...

随机推荐

  1. networkx 学习

    import networkx as nx import pylab import numpy as np #自定义网络 row=np.array([,,,,,,]) col=np.array([,, ...

  2. django的模板(二)

    模板(二) 实验简介 本节继续介绍模板的常用标签,for.if.ifequal和注释标签. 一.基本的模板标签和过滤器 1. 标签 if/else {% if %} 标签检查(evaluate)一个变 ...

  3. 构建微服务开发环境3————Java应用的优秀管理工具Maven的下载安装及配置

    [内容指引] 下载安装包: MacOS下Maven的安装及配置: Windows下Maven的安装及配置. 一.下载安装包 进入Maven的官方下载地址:http://maven.apache.org ...

  4. 九、Python发送QQ邮件(SMTP)

    看了廖雪峰老师的教程: 一封电子邮件的旅程就是 发件人 -> MUA -> MTA -> MTA -> 若干个MTA -> MDA <- MUA <- 收件人 ...

  5. NFS PersistentVolume - 每天5分钟玩转 Docker 容器技术(151)

    上一节我们介绍了 PV 和 PVC,本节通过 NFS 实践. 作为准备工作,我们已经在 k8s-master 节点上搭建了一个 NFS 服务器,目录为 /nfsdata: 下面创建一个 PV mypv ...

  6. Mego(2) - NET主流ORM框架分析

    接上文我们测试了各个ORM框架的性能,大家可以很直观的看到各个ORM框架与原生的ADO.NET在境删改查的性能差异.这里和大家分享下我对ORM框架的理解及一些使用经验. ORM框架工作原理 典型ORM ...

  7. IDE-Android Studio 导入Ecplise项目不改变结构

    Android Studio 导入 Ecplise创建的android 项目  无导入 不修改目录结构 首先,Ecplise 原有目录结构创建的android项目一枚 Sept 1 .  打开项目 S ...

  8. 使用jQuery获取session中存储的list集合

    在网上查找了很多关于jQuery获取session都不可得,如果大家有更好的方式,欢迎留言 这里是使用jQuery发送Ajax请求到后台获取session jsp中没有代码 js代码 <scri ...

  9. 基于JWT标准的用户认证接口实现

    前面的话 实现用户登录认证的方式常见的有两种:一种是基于 cookie 的认证,另外一种是基于 token 的认证 .本文以基于cookie的认证为参照,详细介绍JWT标准,并实现基于该标签的用户认证 ...

  10. 理解JavaScript中函数方法

    1.函数声明和函数表达式 通过字面量创建函数的方式有两种函数声明和函数表达式: 函数声明: function sum(x, y) { var result = x + y; return result ...