题解 | #火车进站#

火车进站

https://www.nowcoder.com/practice/97ba57c35e9f4749826dc3befaeae109

import java.util.Scanner;

import java.util.*; 

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static Stack<Integer> stack = new Stack();
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
    
        while (in.hasNextInt()) { 
            List<String> list=  new ArrayList();
            stack.clear();
            int a = in.nextInt();
            List chs=new ArrayList();
            for(int i=0;i<a;i++){
                chs.add(in.nextInt());
            }
            out(list,0,0,chs,chs.size(),"");
            Collections.sort(list);
            for(int i=0;i<list.size();i++){
                System.out.println(list.get(i));
            }
        }
    }


    //sum是出栈数,i是数组下标,即轮到哪列车进站,chs列车数组,list字符串数组(可能性集合),length列车数
    public static void out(List list,int i,int sum,List chs,int length,String ls){
         //所有车出站(边界条件)
       if(sum==length){
          list.add(ls);
          return;
       } 
       //入站假设
       if(i<length){
          stack.push((Integer)chs.get(i));
          out(list,i+1,sum,chs,length,ls);
          stack.pop();
       }
       //出站
       if(!stack.empty()){
            int k=stack.pop();
            out(list,i,sum+1,chs,length,ls+k+" ");
            stack.push(k);
       }
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 11:32
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务