字元消除 HihoCoder 1039

2021-08-16 09:36:30 字數 1457 閱讀 6638

小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最高能得到的分數。

3

abcbcccaa

aaaabc

9

42

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

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

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

由於題目中含有插入和刪除,我們就很容易聯想到vector(動態陣列的插入,刪除功能)。

然後就是各種各種模擬了。

//動態陣列下標從0開始

t.insert(t.begin()+j,i);//在第j與第j-1個元素間插入i。

t.erase(t.begin()+k);//刪除第k個元素。

#include

#include

#include

#include

using

namespace

std;

const

int maxn=105;

vector

t;int kk,l,ans;char c[maxn];

int max(int x,int y)

int pan()

int main()

if(you)

}ans=max(ans,l+1-t.size());

t.clear();

}printf("%d\n",ans);

for(int i=0;i<=l;i++)

c[i]=0;

ans=l=0;

}}

字元消除 hihoCoder1039

題意 向給定的字串中插入乙個字元 a b 或 c 然後消除左右相同的字元,問插入某乙個位置後最多能夠消除多少個字元。思路 字串長度不超過 100,t 不超過 100,資料比較小,暴力列舉一下插入的位置也不會超時。所以思路就是暴力列舉每乙個插入的位置,然後求出能夠消除的字元個數,取最大的即是最終結果。...

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