494. 目标和
题目描述 给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。 返回可以使最终数组和为目标数 S 的所有添加符号的方法数。 题解思路 1 递归思路,对于每次选择可以选择正数,或者负数,因此采用两次递归就能获取到两种情况的可能,间接实现了动态选择各种情况。 递归解题代码 public class DynamicSolution { private int count = 0; public int findTargetSumWays(int[] nums, int S) { if (nums == null || nums.length == 0) { return count; } goSolute(nums,0,0,S); return count; } public void goSolute(int[] nums,int index, int sum,int S){ if (nums.length == index) { if (sum == S) { count++; } }else { goSolute(nums,index+1,sum+nums[index],S); goSolute(nums,index+1,sum-nums[index],S)