TOJ 1036

//注意下控制格式 

#include <iostream>

#include <stack>

#include <queue>

using namespace std;

bool is_match(queue <int > q,int num)

{

    int i,j,k;

    stack <int > s;

    for(i=1;i<=num;i++)

    {

        s.push(i);

        if(i==q.front())

        {

            while(!s.empty()&&q.front()==s.top())

            {

                q.pop();

                s.pop();

            }

        }

    }

    if(s.empty())

        return true;

    return false;

}

int main()

{

    int i,j,k,T;

    while(cin>>T,T)

    {

        while(1)

        {

            queue <int > s;

            int num,temp=1;//temp必须初始化为非零值,否则下一次的temp直接为0 

            for(i=1;i<=T;i++)

            {

                cin>>num;

                if(num==0)

                {

                    temp =num;

                    break;

                }

                s.push(num);

            }

            if(temp==0)

            {

                cout<<endl;

                break;

            }

            bool flag = is_match(s,num);

            if(flag)

                cout<<"Yes"<<endl;

            else

                cout<<"No"<<endl;

        }

    }

    return 0;

}

            

            

                

 

你可能感兴趣的:(OJ)