poj 1363 Rails 数组模拟栈操作

来源:互联网 发布:java中冒泡排序法代码 编辑:程序博客网 时间:2024/06/04 18:06

不想用栈,用数组写的,感觉好抽象

要是过了这组数据应该差不多了

5

1 2 3 4 5

3 2 1 5 4

3 5 4 2 1

答案都是Yes,注意是Yes,不是YES。。。


#include <iostream>#include <cstdio>#include <cstring>using namespace std;#define M 1005int out[M],q[M];                  //out是输出队列,也就是题目的队列,q是辅助队列int main(){    int n;    while(cin >> n&&n)    {        while(cin >> out[0]&&out[0])        {            for(int i=1;i<n;i++)                cin >> out[i];            int rail=1,i,pos;            for(i=0,pos=0;i<n&&rail<=n;pos++,rail++)            {                q[pos]=rail;                                             //开始为1,也就是说如果输出队列第一个数pos是大于一的,那么辅助队列前pos应该是顺序进栈的                //所以依次增加就行了,直到增加到和输出队列中的值相等,表示这个数可以删除了                while(q[pos]==out[i]&&pos>=0)                           //如果辅助队列的值等于输出队列的,那么就删除,也就是pos--,同时输出队列中的值后移继续比较                {                    pos--;                    i++;                }            }            if(i==n)                  //如果输出队列中的值全部比完而不是辅助队列中的值怎么赋值都不能和输出队列中的数值相等,那就是可以的                cout << "Yes" << endl;            else                cout << "No" << endl;        }        cout << endl;    }    return 0;}


0 0
原创粉丝点击