UVA 10453 十七 Make Palindrome
Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std; char str[];
int dp[][],react[][]; int dfs(int x,int y)
{
if(x>y)
return ;
if(x==y)
printf("%c",str[x]);
else if(react[x][y]==)
{
printf("%c",str[x]);
dfs(x+,y-);
printf("%c",str[y]);
}
else if(react[x][y]==)
{
printf("%c",str[y]);
dfs(x,y-);
printf("%C",str[y]);
}
else if(react[x][y]==)
{
printf("%c",str[x]);
dfs(x+,y);
printf("%c",str[x]);
}
return ;
} int main()
{
int n;
int i,j,k;
while(scanf("%s",str)!=EOF)
{
memset(dp,,sizeof(dp));
memset(react,,sizeof(react)); n=strlen(str);
for(i=n-;i>=;i--)
{
for(j=i+;j<n;j++)
{
if(str[i]==str[j])
{
dp[i][j]=dp[i+][j-];
}
else
{
if(dp[i+][j]>dp[i][j-])
{
dp[i][j]=dp[i][j-]+;
react[i][j]=;
}
else
{
dp[i][j]=dp[i+][j]+;
react[i][j]=;
}
}
}
} printf("%d ",dp[][n-]);
dfs(,n-);
printf("\n");
}
return ;
}
UVA 10453 十七 Make Palindrome的更多相关文章
- 区间DP UVA 10453 Make Palindrome
题目传送门 /* 题意:问最少插入多少个字符使得字符串变成回文串 区间DP:dp[i][j]表示[l, r]的字符串要成为回文需要插入几个字符串,那么dp[l][r] = dp[l+1][r-1]; ...
- uva 11475 - Extend to Palindrome(KMP)
option=com_onlinejudge&Itemid=8&category=506&page=show_problem&problem=2470" ta ...
- 区间DP UVA 10739 String to Palindrome
题目传送门 /* 题意:三种操作,插入,删除,替换,问最少操作数使得字符串变成回文串 区间DP:有一道类似的题,有点不同的是可以替换,那么两端点不同的时候可以替换掉一个后成回文, 即dp[j+1][k ...
- uva 10453 【回文串区间dp】
Uva 10453 题意:给定字符串,问最少插入多少个字符使其变成回文串,并任意输出一种结果. 题解:和Uva 10739类似,这里是只能增加.类似定义dp[i][j]表示子串Si...Sj变为回文串 ...
- uva 10453 - Make Palindrome(dp)
题目链接:10453 - Make Palindrome 题目大意:给出一个字符串,通过插入字符使得原字符串变成一个回文串,要求插入的字符个数最小,并且输出最后生成的回文串. 解题思路:和uva 10 ...
- uva 10453 - Make Palindrome(dp, 记录路径)
题目 题意: 给一个字符串 ,判断最少插入多少个字符 使字符串成为回文串, 并输出回文串. 思路:先用dp判断需要个数, 再递归输出路径. #include <iostream> #inc ...
- UVA 10739 String to Palindrome(动态规划 回文)
String to Palindrome 题目大意:给出一个字符串s,现在可以进行3种操作(添加字母,删除字母,替换字母),将其变成回文串,求出最少的操作次数.比如abccda,可以用删除操作,删除b ...
- UVA 10739 String to Palindrome(dp)
Problem H String to Palindrome Input: Standard Input Output: Standard Output Time Limit: 1 Second In ...
- UVA - 11475 Extend to Palindrome (后缀数组)
Your task is, given an integer N, to make a palidrome (word that reads the same when you reverse it) ...
随机推荐
- 夺命雷公狗jquery---6属性选择器
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 在linux中搭建git服务器
个人觉得, 以下搭建git服务器的过程就像是在linux增加了一个用户, 而这个用户的登录shell是 git-shell, 太刨根问底的东西我也说不清楚, 还是看下面的过程吧. 过程参考了网上的文章 ...
- Debian类系统必做——将【你的用户】加入sudoers用户组
切换到root:su root 修改sudoers nano /etc/sudoers 在root ALL=(ALL:ALL) ALL下,加入:liz ALL=(ALL:ALL ...
- 在IIS站点中Adomd.net集成认证账号问题
最近在做一个Asp.net项目的时候 ,在C#代码里面用到了Adomd.net去连接SSAS服务器做MDX查询,开发完成后将Asp.net代码部署到IIS后发现Adomd.net老是连接不到SSAS服 ...
- FireDac 的数据库批量语句提交(高效)
FD 提供了批量执行功能, 称为 Array DML. 可以这么做: FDQuery1.SQL.Text := 'insert into MyTab values (:p1, :p2, :p3)'; ...
- git 使用详解(5)-- get log 查看提交历史【转】
转自:http://blog.csdn.net/wh_19910525/article/details/7468549 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 限制 ...
- linux信号机制 - 用户堆栈和内核堆栈的变化【转】
转自:http://itindex.net/detail/16418-linux-%E4%BF%A1%E5%8F%B7-%E5%A0%86%E6%A0%88 此文只简单分析发送信号给用户程序后,用户堆 ...
- Java遍历Map的3种方式
package test; import java.util.Collection; import java.util.HashMap; import java.util.Map; import ja ...
- Pascal's Triangle II
class Solution { public: vector<int> getRow(int rowIndex) { vector<int> v; ) return v; v ...
- Best Time to Buy and Sell Stock
class Solution { public: int maxProfit(vector<int>& prices) { //eg: 5 6 2 3 1 4: // 记录i之前最 ...