UVA 514 铁轨 (Rails)

来源:互联网 发布:阿里云挂载数据盘设置 编辑:程序博客网 时间:2024/04/30 07:33

https://vjudge.net/problem/UVA-514

解题思路:.A的铁轨从1到n依次判断 如果和当前轮到的铁轨相同 则从A驶入B,如果不相同,则入栈等候。每次判断之前先判断栈顶的元素是否和当前轮到的铁轨相同 直到不相同为止。

#include<iostream>#include<stack>using namespace std;int main(){    int N;    while(cin >> N&&N)    {        int target[1010];        while(cin >> target[1]&&target[1])        {            stack<int> s;            for(int i = 2 ; i <= N ; i++)            {                cin >> target[i];            }            int A = 1,B = 1;            int result[1010];            for(int i = 1 ; i <= N ; i++)            {                while(!s.empty()&&s.top() == target[A])                {                    result[B] = s.top();                    B++;                    s.pop();                    A++;                }                if(target[A] != i)                {                    s.push(i);                }                else{                    result[B] = i;                    A++;                    B++;                }            }            while(!s.empty())            {                result[B] = s.top();                s.pop();                B++;            }            bool r = true;            for(int i = 1 ; i <= N ; i++)            {                if(target[i] != result[i])                {                    r = false;                    break;                }            }            if(r){cout << "Yes"<<endl;}            else{                cout << "No" <<endl;            }        }        cout << endl;    }    return 0;}
原创粉丝点击