1159 Palindrome(最小插入回文串)
标题效果
定的字符串长度的串和内容。中的字符可以在任何位置被插入。它至少需要为数字,这使得编程回文串串.
回文序列从左至右,从右到左和读取相同.
例如.
aaaacbbbb它是一个回文串
aaab前面插入b使得原串变为baaab这个回文串
我的思路.
1.假设该串为空串,或者长度为一。该串是回文串.
2.假设有字符串,a[o...n-1],(0<=l,r<n)假设从l-r之
1可能是l-r对称回文(假设a[l]==a[r]),在匹配[l+1,r-1]这个串
2.l,给r处加入字a[l]和l位置匹配,在匹配[l,r-1]这个串
3l处加入字符a[r],和r位置匹配。在匹配[l+1,r]这个串
3.用以上方法加上备忘录d[l][r]来记录算过的串的最少插入数目
d[l][r]记录从l...r匹配插入的最少字符。问题d[0][n-1]
if(a[l]==a[r]) dd[l][r]=d[l+1][r+1];
else dd[l][r]=max(dd[l+1][r],dd[l][r-1])+1;
备忘录开成short。否则内存超,
险过得的代码.
/*Source Code
Problem: 1159 User:
Memory: 49652K Time: 1782MS
Language: GCC Result: Accepted Source Code*/ /*插入最少的数字是原来数组成回文串*/
#include <stdio.h>
#include <string.h>
short dd[5001][5001];
char str[5002]="";
int min(int a,int b) {
return a<b?a:b;
}
int f(int l,int r){
if(l>=r) return 0;
else if(dd[l][r]>=0) return dd[l][r];//已经计算出来答案
else{
if(str[l]==str[r])
dd[l][r]=f(l+1,r-1);
else
dd[l][r]=min(f(l+1,r),f(l,r-1))+1;
return dd[l][r];
}
}
int main(){
int n;
scanf("%d",&n);
scanf("%s",str);
memset(dd,-1,sizeof(dd));
printf("%d\n",f(0,n-1));
return 0;
}
版权声明:本文博主原创文章。博客,未经同意不得转载。
1159 Palindrome(最小插入回文串)的更多相关文章
- POJ 1159 Palindrome(字符串变回文:LCS)
POJ 1159 Palindrome(字符串变回文:LCS) id=1159">http://poj.org/problem? id=1159 题意: 给你一个字符串, 问你做少须要 ...
- [LeetCode] Longest Palindrome 最长回文串
Given a string which consists of lowercase or uppercase letters, find the length of the longest pali ...
- [LeetCode] Palindrome Partitioning 拆分回文串
Given a string s, partition s such that every substring of the partition is a palindrome. Return all ...
- lintcode:Palindrome Partitioning 分割回文串
题目: 分割回文串 给定一个字符串s,将s分割成一些子串,使每个子串都是回文串. 返回s所有可能的回文串分割方案. 样例 给出 s = "aab",返回 [ ["aa&q ...
- Longest Palindrome 最长回文串问题
1.题目 Given a string s, find the longest palindromic substring in s. You may assume that the maximum ...
- 131 Palindrome Partitioning 分割回文串
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串.返回 s 所有可能的分割方案.例如,给出 s = "aab",返回[ ["aa"," ...
- 409 Longest Palindrome 最长回文串
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串.在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串.注意:假设字符串的长度不会超过 ...
- Leetcode131. Palindrome Partitioning分割回文串
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返回 s 所有可能的分割方案. 示例: 输入: "aab" 输出: [ ["aa",&quo ...
- LeetCode409Longest Palindrome最长回文串
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: 假设字符串的长度不 ...
随机推荐
- POJ 2418 Hardwood Species( AVL-Tree )
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> ...
- UVAlive 2519 Radar Installation (区间选点问题)
Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. ...
- plsql导入一个目录下全部excel
import java.io.File; import java.util.ArrayList; import jxl.Sheet; import jxl.Workbook; import com.j ...
- window.open()具体解释及浏览器兼容性问题
一.基本的语法:window.open(pageURL,name,parameters)当中:pageURL 为子窗体路径name 为子窗体名字parameters 为窗体參数(各參数用逗号分隔) ...
- HDU 1226 超级密码 (搜素)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1226 题意简单,本来是一道很简单的搜素题目. 但是有两个bug: 1.M个整数可能有重复的. 2.N可 ...
- Android的内存优化
腾讯公司在五月三十一日开展[腾讯Bugly移动开发人员沙龙]大会.大会上面叶方正老师解说了 关于Android的内存优化的问题,只是我感觉叶老师许多其它的站在了測试的角度上去解释了这一方面,叶老师给我 ...
- 自动更改IP地址反爬虫封锁,支持多线程(转)
8年多爬虫经验的人告诉你,国内ADSL是王道,多申请些线路,分布在多个不同的电信机房,能跨省跨市更好,我这里写好的断线重拨组件,你可以直接使用. ADSL拨号上网使用动态IP地址,每一次拨号得到的IP ...
- 基于 Apache Mahout 构建社会化推荐引擎
基于 Apache Mahout 构建社会化推荐引擎 http://www.ibm.com/developerworks/cn/views/java/libraryview.jsp 推荐引擎利用特殊的 ...
- MySQL 全角转换为半角
序言: 用户注冊时候,录入了全角手机号码,所以导致短信系统依据手机字段发送短信失败.如今问题来了,怎样把全角手机号码变成半角手机号码? 1.手机号码全角转换成半角先查询出来全角半角都存在 ...
- 用css3实现各种图标效果
原文:用css3实现各种图标效果 公共样式 应该说现在绝大多数公司的项目前端都是一团乱,不仅仅是js写的没有任何框架而言,css同样也是如此,导致项目如果要升级或者说有新的变更维护起来就特别困难. 最 ...