以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
答案 0 :(得分:1)
这里遵循一些琐碎的代码。这是最佳选择,因为它需要一次生成每个解决方案。
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);
答案 1 :(得分:0)
您可能正在寻找错误描述的单词partition。数字分区是将数字表示为正整数(不含0)的方法。