开心小学徒 2017-11-17 04:07 采纳率: 33.3%
浏览 1061

一道堆栈操作合法性问题,为什么单输入s程序判断结果是错的,不知道自己代码哪里出了问题?

1 堆栈操作合法性
假设以S和X分别表示入栈和出栈操作。如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈操作序列。请编写程序,输入S和X序列,判断该序列是否合法。

输入格式:

输入第一行给出两个正整数N和M,其中N是待测序列的个数,M(≤50)是堆栈的最大容量。随后N行,每行中给出一个仅由S和X构成的序列。序列保证不为空,且长度不超过100。

输出格式:

对每个序列,在一行中输出YES如果该序列是合法的堆栈操作序列,或NO如果不是。

输入样例:

4 10
SSSXXSXXSX
SSSXXSXXS
SSSSSSSSSSXSSXXXXXXXXXXX
SSSXXSXXX
输出样例:

YES
NO
NO
NO

#include
#include

int main(int argc, char *argv[])
{
int N,M;
char a[50];
scanf("%d %d",&N,&M);
getchar();
for(int i=0;i<N;i++)
{

scanf("%s",a);
int top=0;
int flag=1;
int b=strlen(a);

for(int i=0;i<b;i++)
{

       if(a[i]=='s')
       { 
         if(top==M)
         {  flag=0;
            break;
           }
            else
            top++;

        }

        else
        {   
            if(top==0)
            {   flag=0;
                break;
            }
            else
            top--;

        }       

    }

       if(top!=0)  
        flag=0; 
        if(flag)
        printf("YES\n");
        else
        printf("NO\n");

    }








    getchar();
return 0;

}

以上程序求指点!

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-11-17 16:19
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?