hihoCoder 1039 字元消除

2021-09-05 01:38:49 字數 2000 閱讀 9960

分類:字串處理

時間限制:1000ms

單點時限:1000ms

記憶體限制: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個字元。

3abcbcccaa

aaaabc

942

列舉所有可能,嘗試每一種插入方法,尋得最優值。

注:通過c++自帶string類的insert、erase、size等函式簡化操作。

insert用法:

string str=

"123456789"

;//在str[1]處插入字串0,後面子串後移,第二個輸入引數須為字串,不接受字元輸入

str.

insert(1

,"0");

cout << str;

執行結果:

erase用法:

string str =

"123456789"

;str.

erase(5

,3);

//從str[5]開始刪除3個字元

cout << str;

執行結果:

#include

#include

#include

#include

using

namespace std;

intmain()

if(i == str.

size()

)else

//刪除重複字母

bool change =

true

;while

(change&& newstr.

size()

!=0) newstr.

erase

(k, length +1)

; k = k -1;

}}}//分數

score =

1+ str.

size()

- newstr.

size()

;if(score > bestscore)}}

cout << bestscore << endl;

}return0;

}

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...