algorithm - 将数字表示为四个正整数之和 1<a<=b<=c<=d

标签 algorithm combinatorics

给定 N=a+b+c+d,其中 a、b、c、d 是大于 0 的正整数且 a<=b<=c<=d。

我们必须计算将 N 表示为 4 个这样的数字之和的方式的数量。

我的方法是有四个循环并将它们添加到 n 。 但是时间复杂度是 O(n^4) 我们可以减少它吗?

最佳答案

提示:

  1. 有多少种方法可以将 N 表示为两个数字 a 和 b 的和?将此称为 S2(N)。

  2. 你能算出有多少种方法可以将 N 表示为三个数字 a、b 和 c 的和吗? (在你的答案中使用 S2())?称之为 S3(N)。

    从考虑S3(100)开始,统计最大数(c)为97的可能性;然后计算 96、95 等的可能性。这适用于 c>50,但由于重复计算某些可能性而失效。您能否通过向 S2() 和 S3() 添加一个参数来控制总和中的最大数来解决此问题?

  3. 现在,有多少种方法可以将 N 表示为四个数字 a、b、c 和 d 的和? (在你的答案中使用 S3())。

关于algorithm - 将数字表示为四个正整数之和 1<a<=b<=c<=d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31517038/

相关文章:

algorithm - 计算二进制表示中 1 的个数

algorithm - 如何以随机顺序生成所有集合组合

algorithm - 从给定字符串打印按字典顺序排序的子集

algorithm - 修改二进制序列

python - 岛屿的最大面积

C++ Pseudo-RSA 快速求解大量的 d(解密 key )

python - 列表字典的笛卡尔积

java - 组合数学算法(6选2)

algorithm - 间接寻址在此代码中如何工作?

algorithm - 位串中的循环检测