请告诉我如何在C#控制台应用程序中应用排列和组合,并取N和r的值并计算排列和组合。C#中的排列和组合#
4
A
回答
11
我刚开始这样做是为了好玩,它实际上是一个小挑战,因为一个天真的实现非常快速地溢出long
。我在评论中包含了这些内容。
方程
nPr = n!/(n - r)!
nCr = n!/r! (n - r)!
Implementaion
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
相关问题
- 1. 组合和排列
- 2. 多种组合和排列中的R
- 3. PHP中的组合,部署和排列
- 4. 数据帧列的组合和排列
- 5. Excel中的排列组合
- 6. Python中的排列/组合
- 7. 排列组合
- 8. 排列组合
- 9. Python中元组的排列/组合
- 10. Photoshop图层的组合和排列?
- 11. 字符的组合和排列
- 12. c#按升序排序组合列表
- 13. 排列与组合
- 14. SQL排列组合
- 15. 有效地计数组合和排列
- 16. 排列和组合生成算法
- 17. Oracle pl/sql排列和组合
- 18. 排列和组合足球比分
- 19. 哈斯克尔组合和排列
- 20. C# - 数字列表的每个6位数组合(排列组合)
- 21. GROUP组合,排列组合不
- 22. 在Matlab中按行排列组合列
- 23. 连续排列组合中的R
- 24. Python itertools获取排列和列表列表的组合
- 25. 查询组合排列
- 26. 复杂排列/组合
- 27. 排列/与车牌组合
- 28. 递归排列组合
- 29. 改变排列组合(PYTHON)
- 30. 组合/相同排列
你只需要nCr和nPr的数量?你有没有尝试过任何东西?张贴并告诉你卡在哪里。 – weston 2014-10-11 07:12:22