C – 计算一系列数字组合的简单表达式?
真的是一个模糊的陈述(对我来说)
要计算的基本表达式是什么:
- “n个事物的组合数量,每次k为整数”
编辑:更多澄清:“例如,a,b,c,d一次采取三个项目的组合是abc,abd,acd和bcd。换句话说,总共有四种不同的组合四件事“一次三个”。“
我正在学习一门非入门级的C课,同时试图完成我的数学要求以转学为CS学位。 到目前为止,我的所有工作都获得了很高的分数,但是当更高级别的数学出现时,我真的陷入困境。 但我离题了……
对于n ,数字的范围是1-10,而k的范围是1-4。
以下是我收到的唯一参考资料,这是我的头脑。
http://www.themathpage.com/aPreCalc/permutations-combinations-2.htm
基本表达式是n!/(k!(nk)!)。 计算这个的有效方法是使用pascal三角形的2D DP表。
页面上的关键表达式是:
- n C k = n! ÷((n – k)!k!)
这是“一次取k个 n个组合的数量”的简单表达式。 术语n C k是数学家写’一次取k个 n个组合的数量’的方式。 右边的表达式是一种简洁,准确,简单的计算正确值的方法。 它预先知道你知道n! 因子n是因子n ,并且’因子n ‘表示1和n之间的每个数相乘。
请注意, n! 非常快速地变得非常大,所以天真的算法可以工作到大约n = 12但是远远超出这个并且你必须非常小心。
- 0! = 1
- 1! = 1
- 2! = 2
- 3! = 6
- 4! = 24
- 5! = 120
- 6! = 720
- 7! = 5040
- 8! = 40320
- 9! = 362880
- 10! = 3628800
- 11! = 39916800
- 12! = 479001600
- 13! = 6227020800
注意13! 太大了,不适合32位无符号整数,21! 太大了,不适合64位无符号整数,35! 太大了,不适合128位无符号整数(如果你能找到一台具有这种类型的计算机)。
如果你还是无法应付,那么你将在转学时遇到问题; 这不是很复杂的数学。