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);
		}
	}
}
04-28 00:27