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
3sample outputabcbcccaa
aaaabc
942
思路:直接模擬,在所有位置插入a/b/c,然後遞迴消除,遞迴出口:消除後的長度與消除前的一樣。
1 #include 2 #include3 #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...