紫书例题6-2 (UVa 514)
题目链接:https://vjudge.net/problem/UVA-514
题意:按1-n的入栈顺序,出栈顺序能否为输入的一串数字。
思路:直接用C++里的STL(STACK)即可,具体可看代码。
AC代码:
#include <iostream> #include <stack> using namespace std; int main() { int n,t; int a[1005]; while(cin>>n&&n!=0) { while(cin >> t&&t!=0) { a[1]=t; stack <int> q; for(int i=2;i<=n;i++) cin>>a[i]; int num=1; //num记录当前为第几辆车 for(int i=1;i<=n;i++) { q.push(i); //1-n先入栈 while(!q.empty()&&q.top()==a[num]) //判断栈顶元素与当前车辆是否相同,记得判断栈是否为空栈 { q.pop(); if(num<n) //如果num==n,说明已经出完,没必要再增加了 num++; else break; } } if(num==n) cout << "Yes" << endl; else cout << "No" << endl; } cout << endl; } return 0; }

浙公网安备 33010602011771号