随着新学期的到来,ignatius火车站现在变得非常繁忙。许多学生希望通过火车返回学校(因为ignatius火车站的火车是全世界最快的 ^v^)。但这也带来了一个问题,火车站只有一个轨道,所有火车都在这里停靠。火车从一侧进入,另一侧离开。如果火车a先进入轨道,而火车b在火车a离开之前进入轨道,那么火车a必须等待火车b离开后才能离开。下面的图片详细说明了这个问题。现在的问题是,车站最多有9列火车,每列火车都有唯一的id(编号从1到n),火车按顺序o1进入轨道,你的任务是确定火车是否可以按顺序o2离开。



输入包含多个测试用例。每个测试用例由一个整数(火车数量)以及两个字符串组成,分别表示火车进入的顺序O1和离开的顺序O2。输入以文件结束符终止。更多详情请参考示例输入。
输出包含一个字符串,如果无法将O2转换为O1,则输出“No.”;否则,输出“Yes.”,然后输出转换过程(火车进入轨道时输出“in”,离开时输出“out”)。每个测试用例后输出“FINISH”。更多详情请参考示例输出。
示例输入:
<pre class="brush:php;toolbar:false;">3 123 321 3 123 312
示例输出:
<pre class="brush:php;toolbar:false;">Yes. in in in out out out FINISH No. FINISH
提示:对于第一个示例输入,我们让火车1进入,然后是火车2和火车3。因此,现在火车3在轨道的顶部,所以火车3可以先离开,然后是火车2和火车1。对于第二个示例输入,我们需要让火车3先离开,因此我们必须让火车1进入,然后是火车2和火车3。现在我们可以让火车3离开。但在之后,我们无法让火车1在火车2之前离开,因为此时火车2在轨道的顶部。因此我们输出“No.”。
火车进站问题,输入首先包含一个整数N,表示要进站的火车数,然后依次输入进站火车的序号,再输入出站火车的序号,看是否符合出站顺序。当符合顺序时,输出“Yes.”并依次输入每趟车进站出站的状态,进站表示“in”,出站表示“out”。当不符合顺序时,输出“No.”,程序结束后输出“FINISH”。分析:模拟栈的输入输出!
代码语言:javascript 代码运行次数:0 运行 复制
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int t = sc.nextInt();
String in = sc.next();
String out = sc.next();
int a=0;
int b=0;
boolean ok=true;
int top=0;//表示栈里面还有元素
char stack[] = new char[50];
boolean flag[] = new boolean[50];
int i=0;
while(b<t){
if(top>0 && stack[top-1]==out.charAt(b)){
System.out.println("out");
top--;
b++;
}else if(a<t && !flag[a]){
System.out.println("in");
stack[top]=in.charAt(a);
flag[a]=true;
top++;
a++;
}else{
ok=false;
break;
}
}
if(ok) System.out.println("Yes.");
else System.out.println("No.");
System.out.println("FINISH");
}
}
}以上就是HDOJ/HDU 1022 Train Problem I(模拟栈)的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号