目标和
分析
先写个暴力吧,其实就是在一颗二叉树上找一条根节点到叶子节点和为S的路径。DFS一下就好了,所以这显然也是可以DP的
。
class Solution {
public:
int ans = 0;
int findTargetSumWays(vector<int>& nums, int S) {
if (nums.size() == 0)return 0;
dfs(nums, 0, nums[0],S);
dfs(nums, 0, -nums[0], S);
return ans;
}
void dfs(vector<int>& nums, int i, int curS,int des) {
if (i == nums.size() - 1) {
if (curS==des)ans++;
return;
}
dfs(nums, i + 1, curS + nums[i + 1],des);
dfs(nums, i + 1, curS - nums[i + 1],des);
}
};