hdu 1022:Train Problem I(数据结构,栈,递归,dfs)
Train Problem I
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 18095 Accepted Submission(s): 6764



3 123 312
in
in
in
out
out
out
FINISH
No.
FINISH
Hint
For the first Sample Input, we let train 1 get in, then train 2 and train 3.
So now train 3 is at the top of the railway, so train 3 can leave first, then train 2 and train 1.
In the second Sample input, we should let train 3 leave first, so we have to let train 1 get in, then train 2 and train 3.
Now we can let train 3 leave.
But after that we can't let train 1 leave before train 2, because train 2 is at the top of the railway at the moment.
So we output "No.".
#include <iostream>
#include <stack>
using namespace std;
char o1[],o2[];
bool q[];
int n;
bool dfs(bool c,int cn,int index1,int index2,stack <char> s)
{
if(cn>=*n)
return true;
if(c==true){ //当前要求入栈
if(index1>=n)
return false;
s.push(o1[index1++]);
q[cn] = c;
}
else {
if(s.empty())
return false; //当前这样操作不可以
else{
char t;
if(s.top()==o2[index2]){
index2++;
s.pop();
q[cn] = c;
}
else
return false;
}
}
if(dfs(true,cn+,index1,index2,s))
return true;
else if(dfs(false,cn+,index1,index2,s))
return true;
return false;
}
int main()
{
while(cin>>n){
cin>>o1>>o2;
//true为入栈,false为出栈
stack <char> s;
if(dfs(true,,,,s)){ //返回情况
cout<<"Yes."<<endl;
for(int i=;i<n*;i++)
if(q[i])
cout<<"in"<<endl;
else
cout<<"out"<<endl;
cout<<"FINISH"<<endl;
}
else{
cout<<"No."<<endl;
cout<<"FINISH"<<endl;
}
}
return ;
}
Freecode : www.cnblogs.com/yym2013
hdu 1022:Train Problem I(数据结构,栈,递归,dfs)的更多相关文章
- HDU 1022 Train Problem I(栈的操作规则)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1022 Train Problem I Time Limit: 2000/1000 MS (Java/Ot ...
- HDU 1022.Train Problem I【栈的应用】【8月19】
Train Problem I Problem Description As the new term comes, the Ignatius Train Station is very busy n ...
- hdu 1022 Train Problem I(栈的应用+STL)
Train Problem I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDU 1022 Train Problem I(栈模拟)
传送门 Description As the new term comes, the Ignatius Train Station is very busy nowadays. A lot of st ...
- HDOJ/HDU 1022 Train Problem I(模拟栈)
Problem Description As the new term comes, the Ignatius Train Station is very busy nowadays. A lot o ...
- hdu 1022 Train Problem I(栈)
#include<iostream> #include<vector> #include<cstring> #include<string> #incl ...
- HDU 1022 Train Problem I 用栈瞎搞
题目大意:有n辆火车,按一定的顺序进站(第一个字符串顺序),问是否能按规定的顺序出站(按第二个字符串的顺序出去),如果能输出每辆火车进出站的过程. 题目思路:栈的特点是先进后出,和题意类似,还有有一种 ...
- HDU 1022 Train Problem I 模拟栈题解
火车进站,模拟一个栈的操作,额外的栈操作,查看能否依照规定顺序出栈. 数据量非常少,故此题目非常easyAC. 直接使用数组模拟就好. #include <stdio.h> const i ...
- hdu 1022 Train Problem I【模拟出入栈】
Train Problem I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
随机推荐
- linux 16进制 产看文件
hexdump - ascii, decimal, hexadecimal, octal dump 查看十六机制的首选工具. -c 每单元以字节为单位,显示出对应的ASCII码 -C 每单元以字 ...
- python3.X中简单错误处理,和Python2区别
1.print 1.1 Print是一个函数 在Python3中print是个函数,这意味着在使用的时候必须带上小括号,并且它是带有参数的. >>> print 'hello wor ...
- MySQL —— 如何快速对比数据?
我们在MySql中想要对比下两个不同的实例上的数据并且找出差异,除了主键之外我们还要对比每一个字段,应该怎么做呢? 方案一:写一个程序将两个实例里面的每一行数据都分别取出来对比,但是耗时我们无法估计, ...
- Ubuntu系统使用命令禁用触摸板等输入设备
[日期:2012-02-22] 本人用的Ubuntu 10.04系统,笔记本上有鼠标和触摸板.默认下,触摸板是开启的, 有时候打字的时候会不时碰到触摸板,添了不少麻烦,所以得禁用触摸板,限于目前所 ...
- plink参数说明
Plink: command-line connection utilityRelease 0.67Usage: plink [options] [user@]host [command] ...
- centos 搭建nginx
yum install wget yum install gcc-c++ yum -y install pcre prec-devel yum -y install zlib zlib-devel y ...
- 手把手教做Excel直方图
手把手教做Excel直方图 2017-10-05 作者:ExcelHome 阅读:71968次 直方图是用于展示数据的分组分布状态的一种图形,用矩形的宽度和高度表示频数分布,通过直方图,用户可 ...
- session监听器HttpSessionBindingListener
首先我在网上查了一下session的真正销毁条件: 1调用 session.invalidate();方法 2 session到了设置或者默认的超时时间,自动销毁(关闭浏览器此session还未销毁, ...
- 方程式漏洞之复现window2008/win7 远程命令执行漏洞
前几天就想写的,因为一些缘故就没写.此次是在外网环境下进行的.大家在内网中也一个样. 方法: 使用Eternalblue模块,剑测是否有漏洞然后msf生成一个dll直接反弹shell. PS:win版 ...
- 如果本身kali就在局域网,shell在外网,怎么反弹连接呢?
kali虚拟机使用桥接,路由器端口映射监听的端口即可.