HDOJ/HDU 1022 Train Problem I(模拟栈)

看不見的法師
发布: 2025-09-02 08:00:21
原创
796人浏览过

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

HDOJ/HDU 1022 Train Problem I(模拟栈)HDOJ/HDU 1022 Train Problem I(模拟栈)HDOJ/HDU 1022 Train Problem I(模拟栈)

输入包含多个测试用例。每个测试用例由一个整数(火车数量)以及两个字符串组成,分别表示火车进入的顺序O1和离开的顺序O2。输入以文件结束符终止。更多详情请参考示例输入。

输出包含一个字符串,如果无法将O2转换为O1,则输出“No.”;否则,输出“Yes.”,然后输出转换过程(火车进入轨道时输出“in”,离开时输出“out”)。每个测试用例后输出“FINISH”。更多详情请参考示例输出。

示例输入:

凹凸工坊-AI手写模拟器
凹凸工坊-AI手写模拟器

AI手写模拟器,一键生成手写文稿

凹凸工坊-AI手写模拟器359
查看详情 凹凸工坊-AI手写模拟器
<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中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号