背包问题 VI
题目
给出一个无重复正整型数组,用其中数字任意组合(可重复使用),使得和等于给定的target的所有组合。
注意事项
不同的序列计做不同的组合。样例
如nums = [1, 2, 4], target = 4
所有组合方式如下:
[1, 1, 1, 1]
[1, 1, 2]
[1, 2, 1]
[2, 1, 1]
[2, 2]
[4]
return 6题解
public class Solution {
/**
* @param nums an integer array and all positive numbers, no duplicates
* @param target an integer
* @return an integer
*/
public int backPackVI(int[] nums, int target) {
int[] dp = new int[target+1];
dp[0] = 1;
for (int i=1;i<=target;i++)
{
for (int j=0;j<nums.length;j++)
{
if (i >= nums[j])
dp[i] += dp[i-nums[j]];
}
}
return dp[target];
}
}
Last Update 2016.10.7