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); } } }