【华为机试077】火车出站

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HEYIAMCOMING/article/details/81168666

题目描述:

给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号。要求以字典序排序输出火车出站的序列号。 

Java实现:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
import java.util.Stack;
  
public class Main {
    static Stack<String> s1=new Stack<String>();
    static Stack<String> s2=new Stack<String>();
    static List<String> list=new ArrayList<String>();
    public static void pp(String m){
          while(s1.isEmpty()&&s2.isEmpty()){
              list.add(m.trim());
              return ;
          }
          if(!s2.isEmpty()){
              String mm=s2.pop();
              pp(m+" "+mm);
              s2.push(mm);
          }
          if(!s1.isEmpty()){
              String mm=s1.pop();
              s2.push(mm);
              pp(m);
              s2.pop();
              s1.add(mm);
          }
            
          
          
    }
public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    while(sc.hasNext()){
        int N=Integer.parseInt(sc.nextLine());
        String s11=sc.nextLine();
        String a[]=s11.split(" ");
        for(int i=a.length-1;i>=0;i--){
            s1.push(a[i]);
        }
        pp("");
        Collections.sort(list);
        for(String h:list)
            System.out.println(h);
    }
}
}

知识点:

  • 火车出站==火车出栈,给出入栈顺序,得出所有可能的出栈顺序
展开阅读全文

没有更多推荐了,返回首页