494. Target Sum
dp[个数][加起来的和] = 达到的次数
1 class Solution { 2 public int findTargetSumWays(int[] nums, int S) { 3 if(nums.length == 0) return 0; 4 int sum = 0; 5 for(int i = 0; i < nums.length; i++){ 6 sum += nums[i]; 7 } 8 if(S > sum || S < -sum) return 0; //判断有没有可能达到 9 int[][]dp = new int[nums.length+1][2*sum+1]; 10 dp[0][sum] = 1; 11 for(int i = 0; i < nums.length; i++){ 12 for(int j = 0; j <= 2*sum; j++){ 13 if(dp[i][j] != 0){ 14 dp[i+1][j + nums[i]] += dp[i][j]; 15 dp[i+1][j - nums[i]] += dp[i][j]; 16 } 17 18 } 19 } 20 return dp[nums.length][sum+S]; 21 22 } 23 }