1. 程式人生 > >【華為機試077】火車出站

【華為機試077】火車出站

題目描述:

給定一個正整數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);
    }
}
}

知識點:

  • 火車出站==火車出棧,給出入棧順序,得出所有可能的出棧順序