表示一个数字,作为四个正整数的总和1 <a <= b <= c <= d

时间:2015-07-20 12:51:54

标签: algorithm combinatorics

=“”

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

我们必须计算表达N的方式的数量,作为4个这样的数字的总和。

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

1 个答案:

答案 0 :(得分:2)

<强>提示:

  1. 有多少种方法可以将N表示为两个数字之和,a&amp; B'称之为S2(N)。

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

      

    首先考虑S3(100),并计算最大数(c)为97的可能性数;然后计算96,95等的可能性。这适用于c> 50,但由于重复计算一些可能性而分解。你能通过在S2()和S3()中添加一个参数来控制总和中的最大数字吗?

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