在网上看到的第一批笔试里面的一个算法编程题。
问题:有N个蛋和M个篮子,把蛋放到M个篮子里,每个篮子都不能为空。另外,需要满足:任意一个小于N的正整数,都能由某几个篮子内蛋的数量相加的和得到。写出程序,使得输入一个(N,M),输出所有可能的分配情况。
自己写了一个下,纯暴力,几乎没剪枝。
当n为20,m为10的时候,结果是40中情况。
codes:
结果:
1 1 1 1 1 1 1 1 2 10
1 1 1 1 1 1 1 1 3 9
1 1 1 1 1 1 1 1 4 8
1 1 1 1 1 1 1 1 5 7
1 1 1 1 1 1 1 1 6 6
1 1 1 1 1 1 1 2 2 9
1 1 1 1 1 1 1 2 3 8
1 1 1 1 1 1 1 2 4 7
1 1 1 1 1 1 1 2 5 6
1 1 1 1 1 1 1 3 3 7
1 1 1 1 1 1 1 3 4 6
1 1 1 1 1 1 1 3 5 5
1 1 1 1 1 1 1 4 4 5
1 1 1 1 1 1 2 2 2 8
1 1 1 1 1 1 2 2 3 7
1 1 1 1 1 1 2 2 4 6
1 1 1 1 1 1 2 2 5 5
1 1 1 1 1 1 2 3 3 6
1 1 1 1 1 1 2 3 4 5
1 1 1 1 1 1 2 4 4 4
1 1 1 1 1 1 3 3 3 5
1 1 1 1 1 1 3 3 4 4
1 1 1 1 1 2 2 2 2 7
1 1 1 1 1 2 2 2 3 6
1 1 1 1 1 2 2 2 4 5
1 1 1 1 1 2 2 3 3 5
1 1 1 1 1 2 2 3 4 4
1 1 1 1 1 2 3 3 3 4
1 1 1 1 1 3 3 3 3 3
1 1 1 1 2 2 2 2 2 6
1 1 1 1 2 2 2 2 3 5
1 1 1 1 2 2 2 2 4 4
1 1 1 1 2 2 2 3 3 4
1 1 1 1 2 2 3 3 3 3
1 1 1 2 2 2 2 2 2 5
1 1 1 2 2 2 2 2 3 4
1 1 1 2 2 2 2 3 3 3
1 1 2 2 2 2 2 2 2 4
1 1 2 2 2 2 2 2 3 3
1 2 2 2 2 2 2 2 2 3
可能情况的数量:40