N个鸡蛋放到M个篮子中

时间:2022-03-09 17:44:01

N个鸡蛋放到M个篮子中,篮子不能为空,要满足:对任意不大于N的数量,能用若干个篮子中鸡蛋的和表示。

写出函数,对输入整数N和M,输出所有可能的鸡蛋的放法。

比如对于9个鸡蛋5个篮子
解至少有三组:
1 2 4 1 1
1 2 2 2 2

1 2 3 2 1

//篮子数
#define M 5
//鸡蛋数
#define N 9

void findFillEgg(int curNum, int index, int* box) {
if (index == M) {
if (!curNum) {
printArray(box, M);
} else {
return;
}
} else {
for (int i = 1; i <= N - M + 1; ++i) {
box[index] = i;
findFillEgg(curNum - i, index + 1, box);
}
}
}