Найти каждую четверку, которая суммирует данное значение - PullRequest
0 голосов
/ 25 сентября 2018

Я знаю, что эта тема, как 20 раз показано здесь.Но каждый вопрос не соответствует моему ответу.

Я хочу найти каждую четверку (4 числа), большую или равную 0 (натуральное число), которая суммирует до заданного значения.Эти четверки могут повторяться.

Например:

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

Я хочу получить эти четверки в качестве вывода.Обратите внимание, что нет никакого массива чисел (все натуральные числа возможны).

Я знаю, что вы можете получить это с помощью грубой силы, но я хочу наиболее эффективный способ.Есть идеи?

1 Ответ

0 голосов
/ 25 сентября 2018
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);
...