问题 G: 车站调度
来源:互联网 发布:单片机测量电池组电压 编辑:程序博客网 时间:2024/04/27 19:33
前言必读!http://blog.csdn.net/hnust_v/article/details/51747743
问题 G: 车站调度
题目描述
有顺序排列的1,2, 3,…,n节车厢在入站口等待调度。车站设置了一个栈作为缓冲,这样的话只可能进行下列两个操作之一:
(1)如果还有车厢在入站口,将最前面的入栈缓冲
(2)将栈顶的车厢驶出车站
给定一个1至n的排列,问其作为出站序列是否合法。
注意:入站顺序为1,2, 3,…,n,即1先入栈…,n最后入栈。
输入
输入包含若干测试用例。每一个测试用例由多行组成。第一行是两个整数n(1<=n <= 100)和m,n表示入站序列为1至n。m表示随后有m行出站序列。
当n,m均为0时表示输入结束。
输出
对应每一个出站序列,合法则输出一行YES,否则输出一行NO。
//思路:反题意考虑所给序列能不能通过车站(栈)还原成 n,n-1,n-2,……1序列 令i=n 第一步 应当让i先出站 判断 i是否为0 是 返回正确 不是 执行第二步 第二步 判断当前最后一辆是不是i? 是 i=i-1 执行第三步 第三步 判断栈顶元素是不是i 是 i出栈 i=i-1 执行第四步 不是 执行第四步 第四步 判断当前车站(栈)是否为空 是 将i压入栈内 i=i-1并且返回第一步 不是 判断栈顶元素是否比当前最后一辆序列大 是 返回错误 //因为若序号低的压在序号高的上面就无法先输出序号高的,必然是错误的 不是 将最后一辆序号压入栈内 i=i-1并且返回第一步
伪代码描述 :
Judge (n, stack<int> S): //stack请按书实现功能 或者使用 C++ STL need=n for i=n to 1 if A[i] = need need = need -1 while !S.empty() and S.top = need S.pop() need = need -1 continue if S.empty() S.push(A[i]) else if S.top() > A[i] return false else S.push(A[i])return true
//C++:#include <bits/stdc++.h>using namespace std;int A[3000];int Judge(int n){ stack<int> S; int now=n; for(int i=n;i>=1;i--) { if(A[i]==now) { now--; while(!S.empty()&&S.top()==now) { S.pop(); now--; } continue; } // if(!S.empty()) cout<<S.top()<<endl; if(S.empty()) S.push(A[i]); else { if(S.top()>A[i]) return 0; else S.push(A[i]); } } return 1;}int main(){ //freopen("F:\\test.txt","r",stdin); int n,m; while(~scanf("%d %d",&n,&m)&&(n||m)) { for(int k=1;k<=m;k++) { for(int i=1;i<=n;i++) scanf("%d",&A[i]); // printf("\nCase %d\n",k); printf("%s\n",Judge(n)?"YES":"NO"); } }}
0 0
- 问题 G: 车站调度
- 车站调度问题
- 车站
- 车站
- Rails VUA 514 栈的运用,车站调度,
- 关于栈型车站的问题[未解决]
- 脱坑之路-车站项目问题总汇
- 两种车往两个车站运人的java问题
- 关于oracle 10g调度程序PLSQL_BLOCK方式无法使用truncate的问题
- 11g调度(1)
- 11g调度--Programs使用
- 11g调度--scheduler使用
- 11g调度--job使用
- 心情车站
- 车站管理
- 车站分级
- 车站分级
- 车站分级
- 从今天开始我决定好好学习然后每个星期去写两篇博客
- linux重点总结
- 记自己写的第一个批处理
- 编写优雅的JavaScript——前言
- 关于libcurl库使用的一些问题
- 问题 G: 车站调度
- Xml解析网络数据
- C++类实践——时间类
- ApplePay开发-证书篇
- hibernate查询
- 两个链表的第一个公共结点
- 问题 H: 简单表达式求值
- 图形数据库Neo4j(1)----简介及使用
- 统计学 Logistic Regression (逻辑回归)