https://leetcode.com/problems/target-sum/
给一个int数组,只能用“+”和“-”,判断计算后有多少种情况得到指定target
内层循环要用next数组保存下一状态,如果都用dp保存的话,下一状态对于当前未遍历到的状态会有污染。
public class Solution {
public int findTargetSumWays(int[] nums, int s) {
int sum = 0;
for(int i: nums) sum+=i;
if(s>sum || s<-sum) return 0;
int[] dp = new int[2*sum+1];
dp[0+sum] = 1;
for(int i = 0; i<nums.length; i++){
int[] next = new int[2*sum+1];
for(int k = 0; k<2*sum+1; k++){
if(dp[k]!=0){
next[k + nums[i]] += dp[k];
next[k - nums[i]] += dp[k];
}
}
dp = next;
}
return dp[sum+s];
}
}