题目
答案
#include<stdio.h>
int top=0;
void pop()
{
top--;
}
void push()
{
top++;
}
int main()
{
int n,max,i,j,flag=0;
scanf("%d %d",&n,&max);
getchar();
char str[200];
for(i=0;i<n;i++)
{
gets(str);
for(j=0;str[j];j++)
{
if(str[j]=='S')
{
if(top==max) flag=1;
push();
}
else if(str[j]=='X')
{
if(top==0) flag=1;
pop();
}
// printf("%d %d\n",top,flag);
}
if(flag==0&&top==0) printf("YES\n");
else printf("NO\n");
flag=0;
top=0;
}
}
问题总结
-
如果使用
gets()
函数,那就要在输入两个整数后加上
getchar()
;而如果使用
scanf
就不需要了 - 内外循环的变量要区分开,例如i,j,不要都用i
-
注意审题,最后判断时不仅需要没有非法操作,还要堆栈为空(即
top==0
) - 每次循环后要记得将flag以及top变量还原
版权声明:本文为ljhsq原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。