给定N = a + b + c + d其中a,b,c,d是大于0的正整数,并且&lt; = b <= c <= d。
我们必须计算表达N的方式的数量,作为4个这样的数字的总和。
我的方法是有四个循环并将它们添加到n。 但时间复杂度为O(n ^ 4) 我们可以减少吗?
答案 0 :(得分:2)
<强>提示:强>
有多少种方法可以将N表示为两个数字之和,a&amp; B'称之为S2(N)。
你能算出多少种方法可以将N表示为三个数字的总和,a,b&amp; C? (在你的答案中使用S2())?称之为S3(N)。
首先考虑S3(100),并计算最大数(c)为97的可能性数;然后计算96,95等的可能性。这适用于c> 50,但由于重复计算一些可能性而分解。你能通过在S2()和S3()中添加一个参数来控制总和中的最大数字吗?
现在,有多少种方法可以将N表示为四个数字的总和,a,b,c&amp; d? (在答案中使用S3())。