377. Combination Sum IV

来源:互联网 发布:数据库软件培训学校 编辑:程序博客网 时间:2024/06/06 12:59

Given an integer array with all positive numbers and no duplicates, find the number of possible combinations that add up to a positive integer target.

Example:

nums = [1, 2, 3]target = 4The possible combination ways are:(1, 1, 1, 1)(1, 1, 2)(1, 2, 1)(1, 3)(2, 1, 1)(2, 2)(3, 1)Note that different sequences are counted as different combinations.Therefore the output is 7.

Follow up:
What if negative numbers are allowed in the given array?
How does it change the problem?
What limitation we need to add to the question to allow negative numbers?

思路:

提示是动态规划,所以观察给的实例,想要求得dp[4]的所有可能,其实就是求dp[4-1]+dp[4-2]+dp[4-3],注意当target-nums[j]为0的时候,只有一种情况。

public class Solution {    public int combinationSum4(int[] nums, int target) {if (nums == null || nums.length == 0 || target < 1)return 0;int[] dp = new int[target + 1];for (int i = 1; i < dp.length; i++) {dp[i] = 0;for (int j = 0; j < nums.length; j++) {int k = i - nums[j];if (k < 0)continue;if (k == 0)dp[i] += 1;dp[i] += dp[k];}}return dp[target];            }}



0 0
原创粉丝点击