2010年中兴面试题
编程求解:
输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,
使其和等于 m ,要求将其中所有的可能组合列出来.
看了一下网络上基本都是C++的答案,这和中兴招人的要求有关,不过我是学java的,给一个java的算法:
主要思路是排列组合,然后把组合中符合条件的都过滤出来:
public class CombinationToSum {
public static void main(String[] args) {
permutation(6, 6);
}
private static void permutation(int sum, int n) {
for(int i=n; i>0; i--){
if(i == sum){
System.out.println(i);
continue;
}
int pos = i - 1;
while(pos > 0){
List<Integer> ls = new ArrayList<Integer>();
ls.add(i);
for(int j=pos; j&g