求出每个四倍之和等于给定值

时间:2018-09-25 19:51:29

标签: algorithm math complexity-theory

我知道这个话题大约显示20次。但是,每个问题都不适合我的答案。

我想找到每个大于或等于0(自然数)的四元组(4个数),它们加起来等于一个给定值。这些四倍可以重复。

例如:

Wanted sum: 1
Possible quadruples:
    0 0 0 1
    0 0 1 0
    0 1 0 0
    1 0 0 0

我想把那些四倍作为输出。请注意,没有给定的数字数组(所有自然数都是可能的)。

我知道您可以通过蛮力获得,但是我想要最有效的方法。 有任何想法吗?

1 个答案:

答案 0 :(得分:1)

for(int i = 0; i <= sum; i++)
  for(int j = 0; j <= sum - i; j++)
    for(int k = 0; k <= sum - i - j; k++)
      output(i, j, k, sum - i - j - k);