Java實現-揹包問題VI

Narasimha_Karumanchi發表於2017-06-29

給出一個都是正整數的陣列 nums,其中沒有重複的數。從中找出所有的和為 target 的組合個數。

 注意事項

一個數可以在組合中出現多次。
數的順序不同則會被認為是不同的組合。

樣例

給出 nums = [1, 2, 4], target = 4
可能的所有組合有:

[1, 1, 1, 1]
[1, 1, 2]
[1, 2, 1]
[2, 1, 1]
[2, 2]
[4]

返回 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) {
        // Write your code here
        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(nums[j]<=i){
					dp[i]+=dp[i-nums[j]];
				}
			}
		}
		return dp[target];
    }
    
}


相關文章