题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3983
这游戏我玩过啊,根据样例猜对题意
题意:
给你9个字母,其中'g' 'a' 'o'各三个,你可以选择其中一个字母,然后
①这个字母和相邻的相同的字母全部消去
②后面的字母会往前移动
举个例子:
aaoogggoa -> aaoooa -> aaa ->
如果三消,就可以发动对应角色的必杀技
问最多可以有多少次三消
思路:
答案一定是1、2、3中的一种
可以用栈模拟,当前栈顶三个元素相同就弹出,最后栈为空答案一定是3
否则答案就是2或1
……
先删除某个字母,之后再用栈维护,如果最后栈为空答案一定是2
如果无论删除哪个字母最后栈都不为空答案就是1
字母长度为9
随便写随便写
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char str[12], st[12], y[5] = {"wgao"};
int main(void)
{
char ch;
int T, i, j, top;
scanf("%d", &T);
while(T--)
{
top = 0;
scanf("%s", str+1);
for(i=1;i<=9;i++)
{
if(top>=2 && str[i]==st[top] && st[top]==st[top-1])
top -= 2;
else
st[++top] = str[i];
}
if(top==0)
printf("3\n");
else
{
for(j=1;j<=3;j++)
{
top = 0;
ch = y[j];
for(i=1;i<=9;i++)
{
if(str[i]==ch)
continue;
if(top>=2 && str[i]==st[top] && st[top]==st[top-1])
top -= 2;
else
st[++top] = str[i];
}
if(top==0)
{
printf("2\n");
break;
}
}
if(j==4)
printf("1\n");
}
}
return 0;
}
/*
1
gaoggooaa
*/