您的位置:首页 > 其它

九度oj-1366-栈的压入、弹出序列

2015-11-28 10:30 218 查看
时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:2729

解决:1014

题目描述:
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。

输入:
每个测试案例包括3行:

第一行为1个整数n(1<=n<=100000),表示序列的长度。

第二行包含n个整数,表示栈的压入顺序。

第三行包含n个整数,表示栈的弹出顺序。

输出:
对应每个测试案例,如果第二个序列是第一个序列的弹出序列输出Yes,否则输出No。

样例输入:
5


1 2 3 4 5


4 5 3 2 1


5


1 2 3 4 5


4 3 5 1 2

样例输出:
Yes


No


#include<iostream>
#include<stack>
using namespace std;
int a[100005],b[100005];
int main()
{
int n,i,j;
while(cin>>n)
{
stack<int> stk;
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n;i++)
cin>>b[i];
j=i=0;
while(j<n)
{
stk.push(a[i++]);
while(! stk.empty())
{
if(stk.top()==b[j])
{
j++;
stk.pop();
}
else break;
}
if(i==n) break;
}
if(stk.empty()) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  九度