2018年全國多校算法寒假訓練營練習比賽(第二場)A.吐泡泡
阿新 • • 發佈:2018-02-02
兩種 mark 例如 mes names urn mar code else
原題鏈接
描述
小魚兒吐泡泡,嘟嘟嘟冒出來。小魚兒會吐出兩種泡泡:大泡泡"O",小泡泡"o"。
兩個相鄰的小泡泡會融成一個大泡泡,兩個相鄰的大泡泡會爆掉。
(是的你沒看錯,小氣泡和大氣泡不會產生任何變化的,原因我也不知道。)
註意:自左到右進行合並.
例如:ooOOoooO經過一段時間以後會變成oO。
輸入
數據有多組,處理到文件結束。
每組輸入包含一行僅有‘O‘與‘o‘組成的字符串。
輸出
每組輸出僅包含一行,輸出一行字符串代表小魚兒吐出的泡泡經過融合以後所剩余的泡泡。
樣例輸入
ooOOoooO
樣例輸出
oO
思路
用棧模擬就好,水題
代碼
#include <bits/stdc++.h> #define ll long long using namespace std; void check(char ans[], int len) { if(len == 0) return; while(ans[len] == ans[len-1]) { ans[len] = ‘\0‘; len--; if(ans[len] == ‘o‘) ans[len] = ‘O‘; else ans[len--] = ‘\0‘; if(len <= 0) return; } } int main() { char s[102]; while(~scanf("%s", s)) { char ans[102]; int f = 1; while(f) { memset(ans,0,sizeof(ans)); ans[0] = s[0]; int j = 1; f = 0; int len = strlen(s); for(int i = 1; i < len; i++) { int j = strlen(ans); ans[j] = s[i]; check(ans, j); } memset(s,0,sizeof(s)); for(j = 0; ans[j] != ‘\0‘; j++) s[j] = ans[j]; s[j] = ‘\0‘; } printf("%s\n", s); } return 0; }
2018年全國多校算法寒假訓練營練習比賽(第二場)A.吐泡泡