题解 | 火车进站

火车进站

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);
        }
    }
}

全部评论

相关推荐

03-18 17:22
门头沟学院 Java
代码飞升:海投就完了,别管评论区那个sbb卖课的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务