题意简述:给定一个非负数组nums和目标值S,你需要在每个数之前加上加号或减号组成表达式。求令表达式的值恰好为S的方法总共有多少种。
输入:非负数组nums,目标值S
输出:使表达式的值恰好为S的方法总数。
示例:对于数组[1,1,1,1,1],S=3,那么总共有5种方法:令其中1个1取-号,剩余4个1取加号即可。
题解:
表面上看,每个位置都是考虑取加法还是取减法。我们不妨换个思路:记 sum=∑ni=0nums[i] ,如果一开始令所有数都取减号,那么此时表达式的值是所有数之和的负数 −sum ,那么为使表达式的值变为S,要填补的差值是 S