题目:
![]()
解析:
决策树:
![]()
代码设计:
![]()
代码:
写法一:path为全局变量
private int ret,path,aim;public int findTargetSumWays(int[] nums, int target) {aim = target;dfs(nums,0);return ret;}private void dfs(int[] nums, int pos){if(pos == nums.length){if(path == aim) ret++;return;} //添加 '+'path += nums[pos];dfs(nums,pos+1);path -= nums[pos];//回溯//添加 '-'path -= nums[pos];dfs(nums,pos+1); path += nums[pos];//回溯}
写法二:path作为参数
private int ret,aim;public int findTargetSumWays(int[] nums, int target) {aim = target;dfs(nums,0,0);return ret;}private void dfs(int[] nums, int pos,int path){if(pos == nums.length){if(path == aim) ret++;return;}//添加 '+'dfs(nums, pos+1, path + nums[pos]);//添加 '-'dfs(nums, pos+1, path - nums[pos]); }