1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| import java.util.*;
public class Solution {
public int combinationSum (int[] candidates, int target) { int n=candidates.length; int[][] dp=new int[n+1][target+1]; for(int i=0;i<n;i++){ dp[0][i]=0; } for(int i=1;i<=n;i++){ for(int j=0;j<=target;j++){ if(j==candidates[i-1]){ dp[i][j]=dp[i][j-candidates[i-1]]+dp[i-1][j]+1; }else if(j>candidates[i-1]){ dp[i][j]=dp[i-1][j]+dp[i][j-candidates[i-1]]; }else{ dp[i][j]=dp[i-1][j]; } } } return dp[n][target]; } }
|