题目

题意: 给一个字符串 ,判断最少插入多少个字符 使字符串成为回文串, 并输出回文串。

思路:先用dp判断需要个数, 再递归输出路径。

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#define min(a, b)((a)>(b)?(b):(a))
using namespace std; const int maxn = ;
char s[maxn];
int d[maxn][maxn], len; void show(int a, int b)
{
if(a==b)
{
cout<<s[a];
return;
}
if(a>b)
return;
if(s[a] == s[b])
{
cout<<s[a];
show(a+, b-);
cout<<s[b];
}
else
{
if(d[a+][b] < d[a][b-])
{
cout<<s[a];
show(a+, b);
cout<<s[a];
}
else
{
cout<<s[b];
show(a, b-);
cout<<s[b];
}
}
}
int main()
{
int i, k;
while(cin>>s)
{
len = strlen(s);
memset(d, , sizeof(d));
for(i = ; i < len-; i++)
if(s[i]!=s[i+])
d[i][i+] = ;
for(k = ; k <= len-; k++)
for(i = ; i <len; i++)
{
if(i+k<len)
{
if(s[i] == s[i+k])
d[i][i+k] = d[i+][i+k-];
else
d[i][i+k] = min(d[i+][i+k], d[i][i+k-]) + ;
}
}
cout<<d[][len-]<<" ";
show(, len-);
cout<<endl;
}
return ;
}

uva 10453 - Make Palindrome(dp, 记录路径)的更多相关文章

  1. uva 10453 - Make Palindrome(dp)

    题目链接:10453 - Make Palindrome 题目大意:给出一个字符串,通过插入字符使得原字符串变成一个回文串,要求插入的字符个数最小,并且输出最后生成的回文串. 解题思路:和uva 10 ...

  2. 区间DP UVA 10453 Make Palindrome

    题目传送门 /* 题意:问最少插入多少个字符使得字符串变成回文串 区间DP:dp[i][j]表示[l, r]的字符串要成为回文需要插入几个字符串,那么dp[l][r] = dp[l+1][r-1]; ...

  3. PAT L3-001 凑零钱(01背包dp记录路径)

    韩梅梅喜欢满宇宙到处逛街.现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债.韩梅梅手边有104枚来自各个星球的硬币,需要请你帮她盘算一下,是 ...

  4. hdu 1074(状态压缩dp+记录路径)

    题意:给了n个家庭作业,然后给了每个家庭作业的完成期限和花费的实践,如果完成时间超过了期限,那么就要扣除分数,然后让你找出一个最优方案使扣除的分数最少,当存在多种方案时,输出字典序最小的那种,因为题意 ...

  5. Codeforces Round #436 (Div. 2) E. Fire(dp 记录路径)

    E. Fire time limit per test 2 seconds memory limit per test 256 megabytes input standard input outpu ...

  6. CF2B The least round way(dp+记录路径)

    B. The least round way time limit per test 2 seconds memory limit per test 64 megabytes input standa ...

  7. codeforces 1272F dp+记录路径

    题意 给出两个括号序列 \(S\) 和 \(T\),让你构造一个最短的合法括号序列使 \(S\) 和 \(T\) 是它的子序列. 分析 设 \(dp[i][j][k]\) 为这个最短的合法括号序列的前 ...

  8. POJ 题目1141 Brackets Sequence(区间DP记录路径)

    Brackets Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 27793   Accepted: 788 ...

  9. POJ 2111 DP+记录路径

    题意: 思路: 类似滑雪 //By SiriusRen #include <cstdio> #include <cstring> #include <algorithm& ...

随机推荐

  1. Notes of the scrum meeting(10/30)

    meeting time:9:30~11:30p.m.,October 29th,2013 meeting place:20公寓楼前 attendees: 顾育豪                    ...

  2. google chrome 32 升级变更找回user agent(google chrome lose user agent)

    chrome32中user agent 找不着了?没关系,看我画的图吧.为什么是英文的,国际化嘛...

  3. Java7 新特性 switch 可以使用String

    今天和大家分享下 在java7中可以使用String 作为switch 中的参数. 原来在java7之前,switch只能去接收一个 byte.char.short.int 类型 现在在java7中 ...

  4. JUnit4的使用

    JUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写. 先简单解释一下什么是Annotation,这个单词一般是翻译成元数据.元数据 ...

  5. $POST数组论证($GET || $COOKIE || $REQUEST 同理)

    我觉得还是有多个$_POST  如果只有一个$_POST,那么,多个人[同时]提交的话就不好处理  或者一个$_POST 时间限制(如同时钟周期)处理(不可能,不然响应没这么快) 或者 一个$_POS ...

  6. uva 1423 拓扑排序

    刘书上例题  拓扑排序 #include <cstdio> #include <cstdlib> #include <cmath> #include <map ...

  7. uva 10304

    最优二叉查找数 看了这位大牛 的博客 http://www.cnblogs.com/lpshou/archive/2012/04/26/2470914.html /****************** ...

  8. java reflect 例子

    public static void main(String[] args) { Student stu1 = new Student(); stu1.setId(1); stu1.setName(& ...

  9. 对于python的内存管理的好文章

    http://www.cnblogs.com/vamei/p/3232088.html 包含了一个绘制关系图的包

  10. OneAlert:国内首家 SaaS 模式的云告警平台

    随着互联网行业的高速发展,企业 IT 应用环境日趋复杂.几分钟的故障就会严重到用户体验,那么如何有效降低IT故障带来的影响呢?权威数据表明,86%的企业认为建立有效的监控系统和告警系统.提升 IT 的 ...