关闭

nyoj--37--回文字符串(动态规划)

171人阅读 评论(0) 收藏 举报
分类:

回文字符串

时间限制:3000 ms  |  内存限制:65535 KB
难度:4
描述
所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。
输入
第一行给出整数N(0<N<100)
接下来的N行,每行一个字符串,每个字符串长度不超过1000.
输出
每行输出所需添加的最少字符数
样例输入
1
Ab3bd
样例输出
2
来源
IOI 2000



/*将字符串反转,求出两个字符串的最长相同序列长度,总长度减去相同的就是
需要加的字符数量*/
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char str1[10100],str2[1010];
int dp[1010][1010];
int main()
{
	int n;
	scanf("%d",&n);
	while(n--)
	{
		memset(str1,'\0',sizeof(str1));
		memset(str2,'\0',sizeof(str2));
		scanf("%s",str1);
		int len=strlen(str1);
		int k=0;
		for(int i=len-1;i>=0;i--)
		str2[k++]=str1[i];
		memset(dp,0,sizeof(dp));
		for(int i=1;i<=len;i++)
		{
			for(int j=1;j<=len;j++)
			{
				if(str1[i-1]==str2[j-1])
				dp[i][j]=dp[i-1][j-1]+1;
				else
				dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
			}
		}
		printf("%d\n",len-dp[len][len]);
	}
	return 0;
}


0
0
查看评论

nyist oj 37 回文字符串 (动态规划经典)

回文字符串 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字...
  • u014253173
  • u014253173
  • 2014-08-16 11:02
  • 2187

【动态规划】37回文字符串

思路:输入一个字符串s1,,然后对这个字符串反转得到字符串s2,然后求出s1和s2的最大gonggo
  • u010800530
  • u010800530
  • 2014-05-15 14:06
  • 673

回文串-动态规划

Description 回文串是一个正读和反读都一样的字符串,比如level或者noon等等就是回文串。给你一个长度为n( 3 比如字符串 “Ab3bd”可以转换成(“dAb3bAd” or “Adb3bdA”). 但需要插入最少两个字符 Sample Input  5 Ab3bd Sa...
  • sdau20163942
  • sdau20163942
  • 2017-03-31 21:20
  • 280

变成回文字符串所需要的次数-动态规划

描述 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。 输...
  • zoushidexing
  • zoushidexing
  • 2013-09-15 11:20
  • 1577

动态规划:最长回文字符串

题目:请从一个已知的字符串中寻找最长回文字符串 解法1:动态规划 回文字符串的子串也是回文,比如P[i,j](表示以i开始以j结束的子串)是回文字符串,那么P[i+1,j-1]也是回文字符串。这样最长回文子串就能分解成一系列子问题了。这样需要额外的空间O(N^2),算法复杂度也是O(N^...
  • wangbaochu
  • wangbaochu
  • 2016-12-24 19:47
  • 2532

动态规划求解最长回文字符串

首先介绍一下,动态规划算法:    动态规划问题就是,大问题分成小问题,不断地递归,比如一个1000个字符的字符串问题,这个问题的解决建立在999个字符的字符串问题的基础上再添加一个字符串。动态规划算法就是利用空间来提高效率,存储每个子问题处理的结构,然后再解决更大的问题时,如果...
  • PenyPeng
  • PenyPeng
  • 2017-06-18 16:31
  • 457

动态规划解最长回文子序列并优化空间复杂度

本文用动态规划的思想解决最长回文子序列问题,代码简介明了。之后再用很巧妙的方法把空间复杂度从O(n^2)降到O(n)。
  • u012077163
  • u012077163
  • 2013-11-19 01:07
  • 3286

回文字符串-动态规划

描述 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。 输入 第一行给出...
  • myDearing_lulu
  • myDearing_lulu
  • 2016-05-26 11:40
  • 432

动态规划算法求最长回文子串

给出了动态规划方法求最长回文子串的程序及分析。
  • shineboyxxb
  • shineboyxxb
  • 2016-07-31 16:38
  • 2689

动态规划题:把一个字符串变为回文串

版权所有。所有权利保留。 欢迎转载,转载时请注明出处: http://blog.csdn.net/xiaofei_it/article/details/17172891 把一个字符串变成回文串,最少要添加几个字符? 动态规划解: f(i,j)表示s[i..j]变为回文串需要添加的最少字符数...
  • u012077163
  • u012077163
  • 2013-12-06 20:28
  • 2277
    个人资料
    • 访问:163154次
    • 积分:7651
    • 等级:
    • 排名:第3342名
    • 原创:628篇
    • 转载:7篇
    • 译文:0篇
    • 评论:23条
    最新评论