給定字串,求它的回文子串行個數。回文子串行反轉字元順序後仍然與原序列相同。例如字串aba中,回文子串行為"a", "a", "aa", "b", "aba",共5個。內容相同位置不同的子串行算不同的子串行。
第一行乙個整數t,表示資料組數。之後是t組資料,每組資料為一行字串。
對於每組資料輸出一行,格式為"case #x: y",x代表資料編號(從1開始),y為答案。答案對100007取模。
1 ≤ t ≤ 30
小資料字串長度 ≤ 25
大資料字串長度 ≤ 1000
樣例輸入
5樣例輸出abaabcbaddabcba
12111112351121
ccccccc
fdadfa
case #1: 5case #2: 277
case #3: 1333
case #4: 127
case #5: 17
hint:5:
1.f2.d
3.a
4.f
5.d
6.a
7.ff
8.dd
9.aa
10.fdf
11.faf
12.fdf
13.dad
14.ada
15.afa
16.fddf
17.fdadf
大神是用dp做的。。
用dp[i][j]表示這一段裡有多少個回文串,那首先dp[i][j]=dp[i
+1][j
]+dp[i
][j-1
],但是dp[i+1][j]和dp[i][j-1]可能有公共部分,所以要減去dp[
i+1][
j-1]。
如果str[i]==str[j]的話,還要加上dp[i+1][j-1]+1。
以後保險起見還是所有減法的操作都+mod吧。。
#include #include #include #include #include #include#define mod 100007
using namespace std;
int dp[1005][1005];
int main()
} printf("case #%d: %d\n",++cnt,dp[1][n]);
} return 0;
}
程式設計之美 回文字元序列
時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb 給定字串,求它的回文子串行個數。回文子串行反轉字元順序後仍然與原序列相同。例如字串aba中,回文子串行為 a a aa b aba 共5個。內容相同位置不同的子串行算不同的子串行。第一行乙個整數t,表示資料組數。之後是t組資料,...
2015程式設計之美 回文字元序列 區間Dp
給定字串,求它的回文子串行個數。回文子串行反轉字元順序後仍然與原序列相同。例如字串aba中,回文子串行為 a a aa b aba 共5個。內容相同位置不同的子串行算不同的子串行。第一行乙個整數t,表示資料組數。之後是t組資料,每組資料為一行字串。對於每組資料輸出一行,格式為 case x y x代...
2013程式設計之美挑戰賽 集會
description 在一條河的一側,分布著 n 個村莊。這些村莊平日裡需要一些 往來,然而商人們來回走遍每一座村莊是非常辛苦的,於是他們決定每個月都在河邊舉行一次集會,大家都來集會上購買需要的物品。然而在集會地點的選擇上,大家卻有分歧,因為誰都不願意集會的地點離自己村莊非常遠。經過一番激烈的討論...