#include<bits/stdc++.h>//就三种结果分类讨论
using namespace std;
int jud1(char* str) //判断给定一个数组能消掉几个
{
char tmp[12];
strcpy(tmp+1,str);//debug 数组参数
int ans=0,num,st=9;
while(1)
{
int flag=0;
num=0;
for(int i=1;i<=st;i++)
{
if(i+2<=st&&tmp[i]==tmp[i+1]&&tmp[i+1]==tmp[i+2]) //i+2<=st//debug-st
{
flag=1;
i+=2;
ans++;
}
else
{
tmp[++num]=tmp[i];//debug
}
}
st=num;
if(!flag) break;
}
return ans;
}
int jud2(char* str1) //去除某一字母后能消掉几个
{
char str[12];
strcpy(str+1,str1);//debug
char tmp[12];
int num=0;
for(int i=1;i<=9;i++)
{
if(str[i]!='a')
tmp[++num]=str[i];
}
tmp[++num]='\0';
if(jud1(tmp+1)==2) return 1;
num=0;
for(int i=1;i<=9;i++)
{
if(str[i]!='g') tmp[++num]=str[i];
}
tmp[++num]='\0';
if(jud1(tmp+1)==2) return 1;
num=0;
for(int i=1;i<=9;i++)
{
if(str[i]!='o') tmp[++num]=str[i];
}
tmp[++num]='\0';
if(jud1(tmp+1)==2) return 1;
return 0;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
char str[12];
scanf("%s",str+1);
if(jud1(str+1)==3){printf("3\n");}
else
{
if(jud2(str+1)) printf("2\n");
else printf("1\n");
}
}
return 0;
}
ZOJ模拟
最新推荐文章于 2018-05-02 14:35:56 发布