传送门:QAQ
题意:每次消连续的块,最多能消几次长为3的块
附上代码:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
typedef long long LL;
char ch[15];
char bn[15];
int main(void) {
int t;
scanf("%d", &t);
while (t--) {
int maxx = -1;
scanf("%s", bn);
char ax;
for (int z = 0; z < 3; z++) {
for (int i = 0; i < 9; i++) {
ch[i] = bn[i];
}
if (z == 0) ax = 'a';
if (z == 1) ax = 'o';
if (z == 2) ax = 'g';
int num = 7;
int tot = 0;
for (int i = 0; i < num+2; i++) {
if (ch[i] == ax&&i + 2 <= num+1 && ch[i] == ch[i + 1] && ch[i + 1] == ch[i + 2]) {
for (int j = i; j < num - 1; j++) {
ch[j] = ch[j + 3];
}
tot++;
num -= 3;
break;
}
else if(ch[i]==ax){
for (int j = i; j < num+1; j++) {
ch[j] = ch[j + 1];
}
num -= 1;
i--;
}
}
for (int i = 0; i < num; i++) {
if (ch[i] == ch[i + 1] && ch[i + 1] == ch[i + 2]) {
for (int j = i; j < num - 1; j++) {
ch[j] = ch[j + 3];
}
tot++;
num -= 3;
}
}
for (int i = 0; i < num; i++) {
if (ch[i] == ch[i + 1] && ch[i + 1] == ch[i + 2]) {
for (int j = i; j < num - 1; j++) {
ch[j] = ch[j + 3];
}
tot++;
num -= 3;
}
}
for (int i = 0; i < num; i++) {
if (ch[i] == ch[i + 1] && ch[i + 1] == ch[i + 2]) {
for (int j = i; j < num - 1; j++) {
ch[j] = ch[j + 3];
}
tot++;
num -= 3;
}
}
if (tot == 0) tot++;
maxx = max(tot, maxx);
}
printf("%d\n", maxx);
}
return 0;
}