1

嗯,真的是一个模糊的陈述(对我来说)

计算的基本表达式是什么:

  • “一次取 k 个整数的 n 个事物的组合数”

编辑: 再澄清一点:“例如,一次取三个的四个项目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

4

2 回答 2

2

基本表达式是 n!/(k!(nk)!)。一种有效的计算方法是使用帕斯卡三角形的 2D DP 表。

于 2013-02-09T01:36:26.880 回答
1

页面上的关键表达式是:

  • n C k = n!÷ ((n - k)!k!)

这是“一次取k个 n事物的组合数”的简单表达式。术语n C k是数学家写“一次取k个 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 位无符号整数(如果您能找到具有这种类型的计算机)。

如果你仍然无法应付,那么你将在转会中遇到问题;这不是很复杂的数学。

于 2013-02-09T01:40:28.730 回答