7-11 出栈序列的合法性(25 分)

给定一个最大容量为 M 的堆栈,将 N 个数字按 1, 2, 3, ..., N 的顺序入栈,允许按任何顺序出栈,则哪些数字序列是不可能得到的?例如给定 M=5、N=7,则我们有可能得到{ 1, 2, 3, 4, 5, 6, 7 },但不可能得到{ 3, 2, 1, 7, 5, 6, 4 }。

输入格式:

输入第一行给出 3 个不超过 1000 的正整数:M(堆栈最大容量)、N(入栈元素个数)、K(待检查的出栈序列个数)。最后 K 行,每行给出 N 个数字的出栈序列。所有同行数字以空格间隔。

输出格式:

对每一行出栈序列,如果其的确是有可能得到的合法序列,就在一行中输出YES,否则输出NO

输入样例:

5 7 5
1 2 3 4 5 6 7
3 2 1 7 5 6 4
7 6 5 4 3 2 1
5 6 4 3 7 2 1
1 7 6 5 4 3 2

输出样例:

YES
NO
NO
YES
NO
 #include <bits/stdc++.h>
using namespace std;
const int N=1e3+;
stack <int> s;
int t1;
int b[N]; int t2;
int m,n,k;
int main ()
{
cin>>m>>n>>k;
while (k--) {
while (!s.empty()) s.pop();
t2=t1=;
for (int i=;i<=n;i++)
cin>>b[i];
int flag=;
while () {
if (t1==b[t2]) {
t1++;
t2++;
}
else if (!s.empty()&&s.top()==b[t2]) {
s.pop();
t2++;
}
else {
if (t1>n) break;// 不能出栈,也不能入栈就跳出
s.push (t1);t1++;
if (s.size()>=m) {
flag=;
break;
}
}
}
if (!flag||!s.empty()) cout<<"NO\n";
else cout<<"YES\n";
}
return ;
}

最新文章

  1. ABP源码分析二十六:核心框架中的一些其他功能
  2. webapp之meta
  3. yourphp的edit,updata,dele
  4. 8.0/9.0 Email 设置
  5. mssql 动态行转列。
  6. PHPNG (next generation)
  7. hdu 3092 Least common multiple
  8. java中时间格式yyyyMMddHHmmss的大小写问题
  9. php+mysql分页类的入门实例
  10. Node.js异步处理CPU密集型任务
  11. 企业证书发布APP
  12. (转)sql中 in 、not in 、exists、not exists 用法和差别
  13. iOS_10_tableView的简单使用_红楼十二钗
  14. Spark 2.x不支持ALTER TABLE ADD COLUMNS,没关系,我们改进下
  15. jquery_api(事件一)
  16. HTML 5终于定稿,八年后我们再一次谈谈怎么改变世界
  17. iOS 自动布局过程
  18. Cisco VPN Client Error 56解决
  19. SSRF漏洞总结
  20. golang子进程的启动和停止,mac与linux的区别

热门文章

  1. 最新jquery+easyui_api培训文档
  2. pycharm搭建开发配置,远程调试,数据库配置,git配置等
  3. Weka中数据挖掘与机器学习系列之数据格式ARFF和CSV文件格式之间的转换(五)
  4. 服务消费和负载(Feign)
  5. 批量设置样式json版
  6. day22 模块_1
  7. 删除Mac OS X中Finder文件打开方式列表的重复程序或失效的
  8. 关于js的对象原型继承(二)
  9. jstree使用新的
  10. SQL-26 (二次分组)汇总各个部门当前员工的title类型的分配数目,结果给出部门编号dept_no、dept_name、其当前员工所有的title以及该类型title对应的数目count