火車進站,華為
阿新 • • 發佈:2020-07-06
import java.util.*; public class Main { static List<String> res; static Stack<Integer> stk; static void dfs(int[] a, int n, int u, String path, int times) { if(times == n) { res.add(path); return; } if(!stk.isEmpty()) { // 出站 int t = stk.pop(); dfs(a, n, u, path + t + " ", times+1); stk.push(t); } if(n == u) return; stk.push(a[u]); dfs(a, n, u+1, path, times); stk.pop(); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()) { int n = sc.nextInt(); int[] a = new int[n]; for(int i=0; i < n; i++) a[i] = sc.nextInt(); res = new ArrayList<>(); stk = new Stack<>(); dfs(a, n, 0, "", 0); Collections.sort(res); for(int i=0; i < res.size(); i++) { System.out.println(res.get(i)); } } } }