在Java中如何计算排列和组合问题的解?

我正在寻求关于在Java中计算排列和组合问题的解的帮助。具体而言,我想知道如何编写代码以计算n个元素中取r个元素的排列和组合数量。我需要能够区分排列和组合,并能够输出它们的数量。如果有任何示例代码或库的建议,那将是非常有用的。谢谢!

提问时间:2023-06-19 07:59:08 编辑时间:2023-06-19 07:59:10 提问者: 灵魂逐梦
  • 雨中彩虹
    2

    在Java中,可以使用数学库或自己实现组合数公式来计算排列和组合问题的解。下面是使用库的示例代码,需要导入Apache Commons Math库:

    import org.apache.commons.math3.util.CombinatoricsUtils;
    
    public class PermutationCombination {
        public static void main(String[] args) {
            int n = 5; // 元素总数
            int r = 3; // 取出的元素数
    
            // 排列数量
            long permutation = CombinatoricsUtils.factorial(n) / CombinatoricsUtils.factorial(n - r);
            System.out.println("Permutation: " + permutation);
    
            // 组合数量
            long combination = CombinatoricsUtils.binomialCoefficient(n, r);
            System.out.println("Combination: " + combination);
        }
    }
    

    如果不使用库,可以自己实现组合数公式,下面是示例代码:

    public class PermutationCombination {
        public static void main(String[] args) {
            int n = 5; // 元素总数
            int r = 3; // 取出的元素数
    
            // 排列数量
            long permutation = 1;
            for (int i = 0; i < r; i++) {
                permutation *= n - i;
            }
            System.out.println("Permutation: " + permutation);
    
            // 组合数量
            long combination = 1;
            for (int i = 0; i < r; i++) {
                combination *= n - i;
                combination /= i + 1;
            }
            System.out.println("Combination: " + combination);
        }
    }
    
    回答时间:2023-06-19 07:59:13