您的位置:首页 > 大数据 > 人工智能

UVa514 Rails

2015-03-24 12:34 246 查看
题目:铁轨

题目链接: UVa514链接

题目描述:

某城市有一个火车站,有n节车厢从A方向驶入车站,按进站的顺序编号为1-n.你的任务是判断是否能让它们按照某种特定的顺序进入B方向的铁轨并驶入车站。例如,出栈顺序(5
4 1 2 3)是不可能的,但是(5 4 3 2 1)是可能的。

输入n 代表n节车厢,输入一列序,输出是否可以这样的出站;

分析:这题是一道关于栈的应用的题目,wa了好几发,原因在那个开栈的时候,必须在输入n之后,开个新的栈。

代码如下

#include<cstdio>

#include<stack>

using namespace std;

int main()

{

int n;

int i;

int aa[1010];

while(~scanf("%d",&n))

{

if(n==0) break;

stack<int>s;

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

{

scanf("%d",&aa[i]);

}

int A=1,B=1;

int q=1;

while(B<=n)

{

if(A==aa[B])

{

A++;B++;

}

else if(!s.empty()&&s.top()==aa[B])

{

s.pop();

B++;

}

else if(A<=n)

{

s.push(A++);

}

else

{

q=0;break;

}

}

if(q==0) printf("no\n");

else printf("yes\n");

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: