Closed. This question needs details or clarity。它当前不接受答案。












想改善这个问题吗?添加详细信息,并通过editing this post来解决问题。

已关闭6年。



Improve this question




请告诉我如何在C#控制台应用程序中应用置换和组合,并获取N和r的值并计算置换和组合。

最佳答案

我只是为了好玩而去做,实际上是一个挑战,因为天真的实现会很快使long溢出。我已在评论中添加了这些内容。

方程式

nPr = n! / (n - r)!
nCr = n! / r! (n - r)!

实现方式
public static class PermutationsAndCombinations
{
    public static long nCr(int n, int r)
    {
        // naive: return Factorial(n) / (Factorial(r) * Factorial(n - r));
        return nPr(n, r) / Factorial(r);
    }

    public static long nPr(int n, int r)
    {
        // naive: return Factorial(n) / Factorial(n - r);
        return FactorialDivision(n, n - r);
    }

    private static long FactorialDivision(int topFactorial, int divisorFactorial)
    {
        long result = 1;
        for (int i = topFactorial; i > divisorFactorial; i--)
            result *= i;
        return result;
    }

    private static long Factorial(int i)
    {
        if (i <= 1)
            return 1;
        return i * Factorial(i - 1);
    }
}

用法
Console.WriteLine(PermutationsAndCombinations.nPr(10, 3));
Console.WriteLine(PermutationsAndCombinations.nCr(10, 3));

打印:
720
120

关于c# - C#中的置换和组合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26311984/

10-10 17:33