【華為機試077】火車出站
阿新 • • 發佈:2018-12-24
題目描述:
給定一個正整數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); } } }
知識點:
- 火車出站==火車出棧,給出入棧順序,得出所有可能的出棧順序