版权声明:本文为博主原创文章,未经博主允许不得转载。 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);
}
}
}
知识点:
- 火车出站==火车出栈,给出入栈顺序,得出所有可能的出栈顺序