题目描述: 给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数。
组合数
思路:
先自顶向下考虑这个问题,拿这个例子来说,用数字1,2,3来组成4. 考虑组合成4的所有可能,也就是考虑组成 3(4-1) , 2(4-2) , 1(4-3) 的所有可能.
也就是下面这张图
所以这道题还是比较容易的
代码:
class Solution {
public int combinationSum4(int[] nums, int target) {
int n = nums.length;
int[] dp = new int[target+1];//dp[target]定义为:数字为target的时候,所对应的组合数
//找到最基本问题的解
dp[0] = 1;
for (int i = 1; i <= target; i++) {
for (int j = 0; j < n; j++) {
if(i - nums[j] >= 0)
dp[i] += dp[i-nums[j]];
}
}
return dp[target];
}
// public static void main(String[] args) {
// System.out.println(new Solution().combinationSum4(new int[]{1, 2, 3}, ));
// }
}