Pitaya486 2022-09-04 01:35 采纳率: 44.4%
浏览 147
已结题

Java算法题,有带佬看看解决吗,想了一晚上了!

输入n个不相同的数组成不可重复的N位数。
比如:
输入
N=2
n=3
1 2 3
输出
12 21 13 31 23 32
带佬们看看吧,帮不出来真难受

  • 写回答

5条回答 默认 最新

  • 燕少༒江湖 2022-09-04 09:03
    关注
    
    public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.print("N=");
            int N = scanner.nextInt();
            System.out.print("n=");
            int n = scanner.nextInt();
            if(n < N){
                System.out.println("n 必须大于等于N");
                return;
            }
            int[] nums = new int[n];
            for(int i=0; i<n; i++){
                nums[i] = scanner.nextInt();
            }
            permute(N,nums,new ArrayList<>(),0);
        }
    
        /**
         * 递归输出
         * @param N
         * @param nums
         * @param currentList
         * @param index
         */
        public static void permute(int N,int[] nums,List<Integer> currentList,int index) {
            if(currentList.size() == N){
                StringBuilder sb = new StringBuilder();
                for(Integer t : currentList){
                    sb.append(t);
                }
                System.out.print(sb.toString() + " ");
            }
            for(int i = index; i < nums.length; i++){
                if(currentList.contains(nums[i])){
                    continue;
                }
                currentList.add(nums[i]);
                permute(N,nums,currentList,index);
                currentList.remove(currentList.size() - 1);
            }
        }
    

    同学,你看看这个是否满足

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月4日
  • 已采纳回答 9月4日
  • 创建了问题 9月4日