Найти все целые числа i, j, k> = 0, такие что i + j + k <= d? - PullRequest
0 голосов
/ 03 ноября 2019

с d в качестве параметров.

Как называется эта проблема? Являются ли эти реализации решения этой проблемы в C ++?

Например, если d = 2, то решение даст:

2, 0, 0
0, 2, 0
0, 0, 2
1, 1, 0
1, 0, 1
0, 1, 1
1, 0, 0
0, 1, 0
0, 0, 1,
0, 0, 0

Ответы [ 2 ]

1 голос
/ 03 ноября 2019

Здесь следует некоторый тривиальный код. Это оптимально, так как необходимо сгенерировать каждое решение один раз.

for (int i = 0; i <= d; ++i)
    for (int j = 0; i+j <= d; ++j)
        for (int k = 0; i+j+k <= d; ++k)
            printf("%d + %d + %d <= %d\n", i, j, k, d);

Вы можете легко добавить дополнительное условие i <= j <= k следующим образом:

for (int i = 0; i <= d; ++i)
    for (int j = i; i+j <= d; ++j)
        for (int k = i+j; i+j+k <= d; ++k)
            printf("%d + %d + %d <= %d\n", i, j, k, d);
0 голосов
/ 03 ноября 2019

Возможно, вы ищете слово раздел , которое вы описали неправильно. Разделы числа - это способы представления этого числа в виде суммы натуральных чисел (без 0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...