题解 | 火车进站
火车进站
https://www.nowcoder.com/practice/97ba57c35e9f4749826dc3befaeae109
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] order = new int[n]; for(int i = 0;i<n;i++){ order[i] = sc.nextInt(); } List<String>result = new ArrayList<>(); generateOrders(order,0,new Stack<>(),new StringBuilder(),result); Collections.sort(result); for(String s : result){ System.out.println(s); } } public static void generateOrders(int[]order,int index,Stack<Integer>stack,StringBuilder currentOrder,List<String>result){ if(index==order.length&&stack.isEmpty()){ result.add(currentOrder.toString()); return; } if(index<order.length){ stack.push(order[index]); generateOrders(order,index+1,stack,currentOrder,result); stack.pop(); } if(!stack.isEmpty()){ int top = stack.pop(); currentOrder.append(top).append(" "); generateOrders(order,index,stack,currentOrder,result); currentOrder.delete(currentOrder.length()-(top+" ").length(),currentOrder.length()); stack.push(top); } } }