栈模拟

#include<iostream>
#include<cstring>
using namespace
std;
int
main(void)
{

    int
  stack[20],len,in[10],out[20],count[20];
    int
*pp=NULL,*p,top,*q,i,n;
    char
strin[10],strout[10];
    while
(cin>>n)
    {

        cin>>strin>>strout;
        len=strlen(strin);
        for
(i=0;i<len;i++)
        {

            in[i]=strin[i]-'0';
            out[i]=strout[i]-'0';
        }

        memset(stack,0,sizeof(stack));
        memset(count,-1,sizeof(count));
        pp=&in[len-1];
        p=in;
        q=out;
        i=0;
        top=-1;
    //    cout<<*p<<' '<<*q;
        while(p<=pp)
        {

            stack[top+1]=*p;
            top++;
            count[i++]=1;
       
            while
(stack[top]==*q)
            {

                stack[top--]=0;
                count[i++]=0;
                q++;
                if
(top==-1)
                    break
;
            }

                p++;
        }

        if
(top==-1)
        {

            cout<<"Yes."<<endl;
            for
(int k=0;k<i;k++)
            {

                if
(count[k]==1)
                    cout<<"in"<<endl;
                else if
(count[k]==0)
                    cout<<"out"<<endl;
            }

            cout<<"FINISH"<<endl;
        }

        else

            cout<<"No."<<endl<<"FINISH"<<endl;
       strcpy(strin,"0");strcpy(strout,"0");
    }

    return
0;
}

很粗糙的栈,也搞了半天,哎~~

一运行就爆内存错误,卡,,,吃完饭后才发现  * pp=&in[len-1];

这里多了一个*号,,小心使得万年船啊。。。改了半天,之后还改反了:把 while(cin>>n)改成了

while(scanf("%d %s %s"),&n,strin,strout)缺少了终止条件,怪不得outpu time limits…………

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值