UVA 题目10617 - Again Palindrome(区间DP)

原创 2015年11月17日 17:33:53
A palindorme is a sequence of one or more characters that reads the same from the left as it does from
the right. For example, Z, TOT and MADAM are palindromes, but ADAM is not.
Given a sequence S of N capital latin letters. How many ways can one score out a few symbols
(maybe 0) that the rest of sequence become a palidrome. Varints that are only different by an order of
scoring out should be considered the same.
Input
The input file contains several test cases (less than 15). The first line contains an integer T that
indicates how many test cases are to follow.
Each of the T lines contains a sequence S (1 ≤ N ≤ 60). So actually each of these lines is a test
case.
Output
For each test case output in a single line an integer — the number of ways.
Sample Input
3
BAOBAB
AAAA
ABA
Sample Output
22
15

5

题目大意:给一个字符串,问去掉其中几个字符变成回文串,问有多少种去法

思路:多少种去法,实际上就是问这个串里边有多少个回文串,编程之美资格赛的时候做个一个问一个串里边有多少个回文串的,感觉应该问的就是这个,提交,,就过了

ac代码

16449058 825 Walking on the Safe Side Accepted C++ 0.006 2015-11-17 08:21:59

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#define LL long long
using namespace std;
long long dp[1010][1010];
char str[1005];
int main()
{
	int t,c=0;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%s",str);
		int i,len=strlen(str),j;
		for(i=0;i<len;i++)
		{
			dp[i][i]=1;
		}
		for(i=1;i<len;i++)
		{
			for(j=i-1;j>=0;j--)
			{
				dp[j][i]=(dp[j+1][i]+dp[j][i-1]-dp[j+1][i-1]);
				if(str[i]==str[j])
				{
					dp[j][i]+=dp[j+1][i-1]+1;
				}
			}
		}
		printf("%lld\n",dp[0][len-1]);
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

Uva 10617 Again Palindrome(区间dp)

Again Palindromes Input: Standard Input Output: Standard Output Time Limit: 2 Seconds   A pal...
  • acm_BaiHuzi
  • acm_BaiHuzi
  • 2015年01月26日 20:49
  • 571

uva 10617 Again Palindrome

题意:给你n个串(最长不超过60),问有多少种删去字符的方法使剩下的字符成为一个回文子串。 设map[x][y]为从x到y有多少个回文串。 当str[x]==str[y]的时候,我们要考虑x+1,...
  • shiqi_614
  • shiqi_614
  • 2011年11月29日 22:38
  • 2031

UVA 10617 Again Palindrome

uva 10617 Again Palindrome
  • tengfei461807914
  • tengfei461807914
  • 2016年02月10日 01:39
  • 190

uva 10617 - Again Palindrome

Problem I Again Palindromes Input: Standard Input Output: Standard Output Time Limit: 2 Second...
  • u012866104
  • u012866104
  • 2014年08月04日 18:46
  • 310

UVA - 10617 Again Palindrome

题意:只通过删除,问可以弄成多少的回文串,跟之前的一题是相似的,对于str[i] = str[j]的情况,如果我们步删除的话dp[i][j] = dp[i+1][j-1] +1,如果删除str[i]的...
  • u011345136
  • u011345136
  • 2013年09月19日 10:11
  • 425

UVa 10617 - Again Palindrome

字符串的DP,用d[i][j] 表示 i和j ( i 所以有两种情况 当 str [i] == str[j] 时 的d[i][j] >?= dp ( i + 1, j ) + dp ( i, j ...
  • AcToy
  • AcToy
  • 2013年05月05日 20:35
  • 342

UVa:10617 Again Palindrome

这个题我是用递推做的。 dp[i][j]表示【i,j】区间内以j为回文最后一个字符时的回文个数。 那么状态转移方程就是 if i==j  dp[i][j]=1 else if str[i]==...
  • kkkwjx
  • kkkwjx
  • 2013年12月31日 13:01
  • 412

UVA 10617 - Again Palindrome

这道题因为那个score out给我蒙住了,其实说白了,就是给你一串字符串,让你从中找出有多少回文字串,这个回文字串可以是一个字母,也可以是多个。 既然是动态规划题:我们肯定要这样想,让我们求长度为...
  • yuzhaoxin1008
  • yuzhaoxin1008
  • 2015年03月16日 14:04
  • 148

UVA 10617 Again Palindrome

一开始被蒙住了,其实这道题只需要算到底有多少个不同的回文子串就行了,...
  • xiaohaowudi
  • xiaohaowudi
  • 2014年06月05日 15:32
  • 200

UVA 10617 - Again Palindrome

DP,题目大意:给出一个字符串,可以去掉任意位置的字符,要求出共有多少种方法能使它变成回文串思路分析: dp[i][j]表示第i个字符和第j个字符之间的回文串个数,若s[i]==s[j],那么dp[i...
  • lingyunjinzhu
  • lingyunjinzhu
  • 2012年10月25日 13:18
  • 179
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UVA 题目10617 - Again Palindrome(区间DP)
举报原因:
原因补充:

(最多只允许输入30个字)