小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個字元。
樣例輸入
3
abcbcccaa
aaaabc
樣例輸出
9
42
1 暴力法
#include
#include
using namespace std;
void chardelete(string &str); //字元消除
int main()
index++; //嘗試往後面乙個位置插入
}cout << score << endl;
}return
0; }
void chardelete(string &str)
if( num > 1)
else
index++;
}if( isdelete == true)
chardelete(str);
else
return;
}
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...
hihocoder1039 字元消除
具體參照 hihocoder 因為字串長度最大為100,只有abc三個字元,所以只有300種情況,每種情況最差處理是o 100 2 所以即便最差情況也只有3e6的計算次數,不足10ms。因此只需要實現窮舉演算法即可,先插入字元,然後判斷會消除多少字元。輸入字串,返回消除字元的數目,同時字串改變為消除...