字元消除 hihoCoder1039

2021-08-10 06:41:40 字數 2500 閱讀 4120

題意:向給定的字串中插入乙個字元(a、b 或 c),然後消除左右相同的字元,問插入某乙個位置後最多能夠消除多少個字元。

思路:字串長度不超過 100,t 不超過 100,資料比較小,暴力列舉一下插入的位置也不會超時。所以思路就是暴力列舉每乙個插入的位置,然後求出能夠消除的字元個數,取最大的即是最終結果。

**:

還是那個問題,不同的思路實現起來一點都不一樣,有的都不知道怎麼實現,還容易出錯,有的就簡單易懂,所以找到乙個好思路很重要。

比如,這道題消除字元過程中,本來想的是記錄上乙個字元然後和當前的字元比較看是否相同,實現起來很煩。。還 wa 了。後來直接判斷當前字元和左右字元有沒有相同的,實現起來就很簡單了。

下面的程式消除字元用的是迭代。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long ll;

int t;

char str[110];

char str1[110];

char str2[110];

int f()

else

if(str1[0] != str1[1])

else

if(str1[0] == str1[1])

for(int i=1; i1; i++)

else

}if(str1[len-1] != str1[len-2])

else

str2[len2] = '\0';

strcpy(str1, str2);

}return sum - strlen(str1);

}int main()

tmpans = f();

ans = max(ans, tmpans);

str1[0] = 'b';

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

tmpans = f();

ans = max(ans, tmpans);

str1[0] = 'c';

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

tmpans = f();

ans = max(ans, tmpans);

for(int i=0; iint t = 0;

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

str1[t++] = 'a';

for(int j=i+1; j0;

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

str1[t++] = 'b';

for(int j=i+1; j0;

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

str1[t++] = 'c';

for(int j=i+1; jprintf("%d\n", ans);}}

return

0;}

看了看別人用 string 寫的,string 的 insert 函式用起來太方便了。。。

下面的程式消除字元用的是遞迴。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long ll;

int t;

int cal(string src)

else

if(src[0] != src[1])

else

if(src[0] == src[1])

for(int i=1; i1; i++)

else

}if(src[len-1] != src[len-2])

else

//cout << dst << endl;

if(flag) return len - dst.size() + cal(dst);

else

return len - dst.size();

}int main()

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

return

0;}

字元消除 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 字元消除

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