算法面试题 找出所有的数字组合 挑战一下吧!

2014-11-24 01:37:58 · 作者: · 浏览: 11

给你一个小于50的数字 a ,请写出一个算法得到所有可能的数字集合,每个数字集合满足以下条件:


1. 集合中所有数字的和等于a;


2. 集合中的所有数字均大于1;


3. 集合中可以出现重复数字;


例如:


2 -> {2},
3->{3},
4->{[4], [2, 2]},
5->{[5], [3, 2]},
6->{[6], [4, 2], [3, 3], [2, 2, 2]}
7->{[7], [5, 2], [4, 3], [3, 2, 2]}
8->{[8], [6, 2], [5, 3], [4, 4], [4, 2, 2], [3, 3, 2], [2, 2, 2, 2]}