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 }

 

posted @ 2018-10-30 04:21  jasoncool1  阅读(137)  评论(0编辑  收藏  举报