hihocoder 1039 字元消除

2022-07-12 09:45:11 字數 1380 閱讀 6505

time limit:1000ms

case time limit:1000ms

memory limit:256mb

小hi最近在玩乙個字元消除遊戲。給定乙個只包含大寫字母"abc"的字串s,消除過程是如下進行的:

1)如果s包含長度超過1的由相同字母組成的子串,那麼這些子串會被同時消除,餘下的子串拼成新的字串。例如"abccbcccaa"中"cc","ccc"和"aa"會被同時消除,餘下"ab"和"b"拼成新的字串"abb"。

2)上述消除會反覆一輪一輪進行,直到新的字串不包含相鄰的相同字元為止。例如」abccbcccaa」經過一輪消除得到"abb",再經過一輪消除得到"a"

遊戲中的每一關小hi都會面對乙個字串s。在消除開始前小hi有機會在s中任意位置(第乙個字元之前、最後乙個字元之後以及相鄰兩個字元之間)插入任意乙個字元('a','b'或者'c'),得到字串t。t經過一系列消除後,小hi的得分是消除掉的字元的總數。

請幫助小hi計算要如何插入字元,才能獲得最高得分。

輸入第一行是乙個整數t(1<=t<=100),代表測試資料的數量。

之後t行每行乙個由'a''b''c'組成的字串s,長度不超過100。

對於每一行輸入的字串,輸出小hi最高能得到的分數。

第一組資料:在"abcbcccaa"的第2個字元後插入'c'得到"abccbcccaa",消除後得到"a",總共消除9個字元(包括插入的'c')。

第二組資料:"aaa"插入'a'得到"aaaa",消除後得到"",總共消除4個字元。

第三組資料:無論是插入字元後得到"aabc","abbc"還是"abcc"都最多消除2個字元。

sample input

3

abcbcccaa

aaaabc

sample output

9

42

思路:直接模擬,在所有位置插入a/b/c,然後遞迴消除,遞迴出口:消除後的長度與消除前的一樣。

1 #include 2 #include 

3 #include 4 #include 5

using

namespace

std;67

//輸入串,返回得分

8int getcnt(string

s) 18 pos =i;19}

20}21int len_res =res.length();

22//

如果消除後的串長度和消除前的相同,遞迴消除結束

23if (len_res ==len) else28}

2930

intmain()

3144

}45 cout47return0;

48 }

hihocoder 1039 字元消除

小hi最近在玩乙個字元消除遊戲。給定乙個只包含大寫字母 abc 的字串s,消除過程是如下進行的 1 如果s包含長度超過1的由相同字母組成的子串,那麼這些子串會被同時消除,餘下的子串拼成新的字串。例如 abccbcccaa 中 cc ccc 和 aa 會被同時消除,餘下 ab 和 b 拼成新的字串 a...

Hihocoder 1039 字元消除

小hi最近在玩乙個字元消除遊戲。給定乙個只包含大寫字母 abc 的字串s,消除過程是如下進行的 1 如果s包含長度超過1的由相同字母組成的子串,那麼這些子串會被同時消除,餘下的子串拼成新的字串。例如 abccbcccaa 中 cc ccc 和 aa 會被同時消除,餘下 ab 和 b 拼成新的字串 a...

hihocoder 1039 字元消除

時間限制 1000ms 單點時限 1000ms 記憶體限制 256mb 小hi最近在玩乙個字元消除遊戲。給定乙個只包含大寫字母 abc 的字串s,消除過程是如下進行的 1 如果s包含長度超過1的由相同字母組成的子串,那麼這些子串會被同時消除,餘下的子串拼成新的字串。例如 abccbcccaa 中 c...