美文网首页
2018-01-21

2018-01-21

作者: Gleisure | 来源:发表于2018-01-25 01:27 被阅读0次

    知识点:栈

           栈是一种常用的先进后出的线性表,只能在一端进行插入或删除操作。表中允许进行插入、删除操作的一端称为栈顶,另一端为栈底。栈中没有数据元素时称为空栈,插入操作称为压栈或进栈,删除操作称为退栈或出栈。

    题目:

    http://acm.hdu.edu.cn/showproblem.php?pid=1022

    题目解析:

    题目模拟火车站台火车进出顺序,要求第一行输入一个整数表示火车数量,接着输入火车进站顺序和出栈顺序,若能按顺序进出,则输出“yes”,并输出进出顺序,若不能,则输出“no”,结束输出“Finnish”。可用c++的stack容器解决该问题。

    使用stack容器要加#include<stack>头文件。操作有:

    1.入栈:s.push(x)

    2.出栈:s.pop()     注意:出栈操作只是删除栈顶元素,不返回该元素。

    3.访问栈顶:s.top()

    4.判断栈空:s.empty()  栈为空时为true

    5.访问栈中的元素个数:s.size()

    解题代码:

    #include

    #includeusing namespace std;

    int main()

       int n;

       char in[100]; 

       char out[100]; 

       int flag[100];

      while(cin>>n) 

     {

          cin>>in;

          cin>>out;

          stack s;

           int i=0;      

           int j=0;      

           for(i;i<=n;)

           {

                if(s.empty())  

                {

                    s.push(in[i]);

                    flag[i+j] = 0;

                    i++;          

                }

                if(!s.empty()&&s.top()!=out[j])

                {

                    s.push(in[i]);

                    flag[i+j] = 0;

                    i++;

                }

                if(!s.empty()&&s.top()==out[j])

                {

                    s.pop();

                    flag[i+j] = 1;

                    j++;

                }                           

            }

            if(s.empty())                    

            {

                cout<<"Yes."<<endl;

                for(i=0;i<2*n;i++)

                {

                    if(flag[i]!=1)    cout<<"in"<<endl;

                     else   cout<<"out"<<endl;

                 }

                 cout<<"FINISH"<<endl;

            }

      else

      { 

          cout<<"NO"<<endl;

          cout<<"FINISH"<<endl;

      }

    }

    return 0;

    }

    相关文章

      网友评论

          本文标题:2018-01-21

          本文链接:https://www.haomeiwen.com/subject/bmdfaxtx.html