Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C-一个简单的表达式,用于计算一系列数字的组合?_C_Math - Fatal编程技术网

C-一个简单的表达式,用于计算一系列数字的组合?

C-一个简单的表达式,用于计算一系列数字的组合?,c,math,C,Math,(对我来说)这真是一个模糊的说法 要计算的基本表达式是什么: “一次将k作为整数的n个事物的组合数” 编辑: 再澄清一下: 例如,四个项目a、b、c、d的组合一次取三个是abc、abd、acd和bcd。换句话说,共有四个不同的组合,四个东西“一次取三个” 我正在上一门非入门级的C课程,同时试图完成我的数学要求,以获得CS学位。到目前为止,我的所有作业都取得了很高的分数,但当数学水平提高时,我真的陷入了困境。但我离题了 n的数字范围为1-10 k的范围是1-4 下面是我收到的唯一的参考资料,这

(对我来说)这真是一个模糊的说法

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

  • “一次将k作为整数的n个事物的组合数”
编辑: 再澄清一下: 例如,四个项目a、b、c、d的组合一次取三个是abc、abd、acd和bcd。换句话说,共有四个不同的组合,四个东西“一次取三个”

我正在上一门非入门级的C课程,同时试图完成我的数学要求,以获得CS学位。到目前为止,我的所有作业都取得了很高的分数,但当数学水平提高时,我真的陷入了困境。但我离题了

n的数字范围为1-10 k的范围是1-4

下面是我收到的唯一的参考资料,这是我无法理解的


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

页面上的关键表达式是:

  • nCk=n!÷((n)− k) !k!)
这是“一次取k的n个事物的组合数”的简单表达式。术语nCk是数学家书写“一次取k的n个事物的组合数”的方式。右边的表达式是计算正确值的简洁、准确和简单的方法。前提是你知道n!是阶乘n,阶乘n是指1和n之间的每个数字相乘

要知道,n!变得非常大非常快,所以天真的算法将工作到大约n=12,但远远超过这一点,你必须非常小心

  • 0!=一,
  • 1!=一,
  • 2!=二,
  • 3!=六,
  • 4!=二十四
  • 5!=120
  • 6!=720
  • 7!=5040
  • 8!=40320
  • 9!=362880
  • 10!=3628800
  • 11!=39916800
  • 12!=479001600
  • 13!=6227020800
注意13!太大,无法放入32位无符号整数,且为21!太大,无法放入64位无符号整数,和35!太大,无法放入128位无符号整数(如果您可以找到具有这种类型的计算机)


如果你仍然无法应付,那么你将在转会中面临问题;这不是一个非常复杂的数学问题。

如果那一页是对你问题的清晰而准确的回答,但在你的脑海中,我不确定我们能做些什么来帮助你。听起来你需要学更多的数学。我们不能在这里教你数学。看看吧,你也可以去看看。你也可以在我们的姐妹网站上问数学问题。在纸上写下你的答案,直到答案变得清晰,或者你决定CS可能是错误的路径(以先到者为准)。如果你想取得进展,你需要看看那页上到底是什么,然后开始解决这个问题。显然,这是您首先需要帮助的页面,然后您可以处理C代码。那么:你在页面上的什么地方卡住了?这可以写为'n(阶乘)/(k(阶乘)(n-k)阶乘)感叹号表示阶乘运算。例如,n!=n*(n-1)*(n-2)*……*1。这可以写为n(阶乘)+(n-k)阶乘k阶乘吗?这就是我需要写的“1和n之间的每个数字相乘在一起”更可能的情况是,您将它写成C中的
factorial(n)/(factorial(n-k)*factorial(k))
。更可能的情况是,您将它写成C中的
factorial(n)/(factorial(n-k)*factorial(k))
。您可以编写函数
unsigned factorial(unsigned n){…}
哪一个进行计算,或者简单地用值创建一个数组并返回数组的正确元素(因为有效值的范围很小)。谢谢!这就是我需要知道的。