北京环保网站建设,手机网页设计制作网站,免费建站免费网站申请,视频app开发某城市有一个火车站#xff0c;铁轨铺设如图6-1所示。 有n节车厢从A方向驶入车站#xff0c;按进站顺 序编号为1#xff5e;n。 你的任务是判断是否能让它们按照某种特定的顺序进入B方向的铁轨并驶出 车站。 例如#xff0c;出栈顺序(5 4 1 2 3)是不可能的#xff0c;但(5…某城市有一个火车站铁轨铺设如图6-1所示。 有n节车厢从A方向驶入车站按进站顺 序编号为1n。 你的任务是判断是否能让它们按照某种特定的顺序进入B方向的铁轨并驶出 车站。 例如出栈顺序(5 4 1 2 3)是不可能的但(5 4 3 2 1)是可能的。 为了重组车厢你可以借助中转站C。 这是一个可以停放任意多节车厢的车站但由于 末端封顶驶入C的车厢必须按照相反的顺序驶出C。 对于每个车厢一旦从A移入C就不 能再回到A了一旦从C移入B就不能回到C了。 换句话说在任意时刻只有两种选择 A→C和C→B。 Sample Input 5 1 2 3 4 5 5 4 1 2 3 0 6 6 5 4 3 2 1 0 0 Sample Output Yes No
Yes
解题思路 模拟栈。
代码如下:
#include iostream
#include stack
using namespace std;
const int N 1010;
int a[N];
int n;
int main() {while (cin n,n) {while (cin a[1],a[1]) {for (int i 2; i n; i)cin a[i];int j 1;stackints;for (int k 1; k n; k) {s.push(k);while (!s.empty() s.top() a[j]) {j;s.pop();}}if (s.empty() j n 1)cout Yes endl;elsecout No endl;}cout endl;}return 0;
}