с d в качестве параметров.
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
Здесь следует некоторый тривиальный код. Это оптимально, так как необходимо сгенерировать каждое решение один раз.
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 следующим образом:
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).