1652. [算法课回溯]目标和

给你一个整数数组 nums 和一个整数 target 。

向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 :

例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得到表达式 "+2-1" 。 返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。

提示:

  • 1 <= nums.length <= 20
  • 0 <= nums[i] <= 1000
  • 0 <= sum(nums[i]) <= 1000
  • -1000 <= target <= 1000

输入

第一行为若干整数代表 nums

第二行为整数 target

输出

一行一个整数代表答案

样例

标准输入 复制文本
1 1 1 1 1
3
标准输出 复制文本
5
标准输入 复制文本
3 4 5 3 3
12
标准输出 复制文本
3

提示

输出:5 样例一解释:一共有 5 种方法让最终目标和为3

-1 + 1 + 1 + 1 + 1 = 3

+1 - 1 + 1 + 1 + 1 = 3

+1 + 1 - 1 + 1 + 1 = 3

+1 + 1 + 1 - 1 + 1 = 3

+1 + 1 + 1 + 1 - 1 = 3

登录以提交代码。
单点时限 1 秒
内存限制 128 MB
提交 2311
通过 1617