題意:向給定的字串中插入乙個字元(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...