
这道题目第一眼感觉就不像是动态规划,可以看出来是回溯问题,但是暴力回溯超时,想要用动态规划得进行一点数学转换

class Solution {
public:
int findTargetSumWays(vector<int>& nums, int target) {
int n=nums.size(),bagWeight=0,sum=0;
for(int i=0;i<n;i++)
sum+=nums[i];
//target绝对值大于sum时方法为0
if(abs(target)>sum)
return 0;
//(sum+target)/2有余数时方法为0
if((sum+target)%2)
return 0;
bagWeight=(sum+target)/2;
vector<int> dp(bagWeight+1,0);
dp[0]=1;
for(int i=0;i<n;i++)
for(int j=bagWeight;j>=nums[i];j--)
dp[j]+=dp[j-nums[i]];
return dp[bagWeight];
}
};



















![电脑问题4[非华为电脑安装华为电脑管家华为荣耀手机多屏协助]](https://i-blog.csdnimg.cn/direct/5dde911f252948238abcc45f10e3e0be.png)