Rail_UVa514_栈
2024-08-26 06:05:40
/*
https://vjudge.net/problem/UVA-514
*/
#include "pch.h"
#include<iostream>
#include<cstdio>
#include<stack>
using namespace std;
const int MAXN = + ;
int n, target[MAXN]; int main()
{ while (scanf("%d", &n) == ) // 输入,一共n辆火车
{
int isOnePart = ; // 是否是同一次测试
if (n == ) // 程序应当结束
break;
while (isOnePart) // 是同一次测试时
{
stack<int> s;
int A = , B = ; // A:进C站顺序 1,2,3,...,n B:数组target的下标
for (int i = ; i <= n; i++)
{
scanf("%d", &target[i]); // 输入出C站顺序
if (target[i] == )
{
isOnePart = ;
printf("\n"); // 注意!
break;
}
}
if (isOnePart == ) // 退出此次测试,进入另一部分的测试
break;
int ok = ; // 标志,是否可以按顺序出站
while (B <= n) // 判断当前出C站的车辆数是否达到总数
{
if (A == target[B]) // 要进站的火车与要出站的火车为同一辆,则进站后直接出站
{
A++; B++;
}
else if (!s.empty() && s.top() == target[B]) // 栈(站)非空,栈顶与要出站的火车相同,则出站
{
s.pop();
B++; // 要出站的++
}
else if (A <= n) // 要进站的与出站的不同,只进站,先等着,当栈顶与目标相同时再出(上一个if)
{
s.push(A++);
}
else
{
ok = ; //正常结束循环为b=n, 若前几种情况都不符合,则不能按照要求顺序出站,break
break;
}
}
printf("%s\n", ok ? "Yes" : "No");
} }
return ;
}
最新文章
- 简单快捷好用的vim配置和终端配置推荐
- Nginx 启用gzip压缩
- java指针
- jquery 列求和
- 单例-b
- C# 窗体在线2,8,16进制转换以及,在线更新时间
- Oracle性能分析7:创建索引
- java注意事项演示 地图产生表 演示样本 来自thinking in java 4 20代码的章
- 为WebBrowser的WEB页的Document注册事件的问题
- mpi和cuda混合编程的正确编译
- mvn 下载源码和javadoc
- zencart里常用 SQL
- PHP实现水印效果(文字、图片)
- element 给table的个别表格框添加样式 ---重构里面的组件
- TinyMCE
- C#微信公众号开发——获取access_token
- 20155334 《网络攻防》 Exp7 网络欺诈防范
- python 单变量线性回归
- 生成图片验证码(.NET)
- 【转】Linux中/etc/profile,/etc/bashrc,~/.profile,~/.bashrcd的区别
热门文章
- [小问题笔记(九)] SQL语句Not IN 效率低,用 NOT EXISTS试试
- SAP固定资产业务场景及方案
- C# linq 最大、最小对象的扩展
- IOS学习笔记一1
- chrome浏览器的SwitchyOmega插件使用方法
- 《深入理解JVM虚拟机》读书笔记
- gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now
- sklearn.linear_model.LinearRegression
- HashMap源码解读
- ABP捕捉异常错误代码