1. 题意
给定两个正整数,N和Sum,其中N表示 1…N这样一个由N个连续的整数数组成的序列,而Sum表示从这1…N个数中,任意取K个数,使其和为Sum,其中1<=K<=N,要求输出所有可能的组合数。
2. 解法
核心思想: 将n问题转换为n-1问题
对于这样1..N的N个数,我们可以考虑是否选择第N个数来解决,问题就可以转换成N-1个数的问题,也就是说:
1)如果我们取了第N个数,那么问题就变成了”在1..N-1这个N-1个数中,选取K个数,使得其和为Sum-N”
2)如果我们不取第N个数,那么问题就变成了”在1..N-1这个N-1个数中,选取K个数,使得其和为Sum”
对于以上分析,我们定义一个函数SumOfKValue, 其实现如下:
/**
* Created by ChaoNi on 2016/9/23.
*/
import java.util.*;
public class Main{
//记录选取的数字
private <