Java

java如何输出排列组合

小亿
81
2024-09-26 01:21:09
栏目: 编程语言

在Java中,可以使用递归的方法来实现排列组合的输出。以下是一个简单的示例,展示了如何使用递归生成从n个元素中选取r个元素的排列组合:

import java.util.ArrayList;
import java.util.List;

public class PermutationsCombinations {

    public static void main(String[] args) {
        int n = 4;
        int r = 2;
        List<List<Integer>> result = permute(n, r);
        System.out.println("排列组合结果: " + result);
    }

    public static List<List<Integer>> permute(int n, int r) {
        List<List<Integer>> result = new ArrayList<>();
        if (n < r) {
            return result;
        }
        if (r == 0 || r == n) {
            result.add(new ArrayList<>());
            return result;
        }
        for (int i = 0; i < n; i++) {
            int[] nums = new int[n];
            for (int j = 0; j < n; j++) {
                nums[j] = i == j ? 1 : 0;
            }
            List<Integer> current = new ArrayList<>();
            for (int num : nums) {
                current.add(num);
            }
            current.remove(current.size() - r);
            List<List<Integer>> remaining = permute(n, r - 1);
            for (List<Integer> perm : remaining) {
                perm.addAll(current);
                result.add(perm);
            }
        }
        return result;
    }
}

在这个示例中,permute方法接受两个整数参数nr,分别表示从n个元素中选取r个元素的排列组合。方法首先检查边界条件,如果n < r,则返回空结果。接下来,使用递归的方式生成排列组合。

main方法中,我们调用permute方法并输出结果。例如,当n = 4r = 2时,输出结果为:

排列组合结果: [[0, 1], [0, 2], [0, 3], [1, 0], [1, 2], [1, 3], [2, 0], [2, 1], [2, 3], [3, 0], [3, 1], [3, 2]]

0
看了该问题的人还看了