找到每个总和为给定值的四元组

Find every quadruple which sum to a given value

我知道这个主题在这里显示了 20 次。但是,并不是每一个问题都适合我的回答。

我想找到所有大于或等于 0(自然数)且总和等于给定值的四元组(4 个数字)。这些四元组可以重复。

例如:

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

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

我知道你可以通过暴力破解得到这个,但我想要最有效的方法。 有什么想法吗?

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);