当前位置: 首页 > news >正文

搜索引擎营销案例网站关键词快速优化

搜索引擎营销案例,网站关键词快速优化,免费学课程的软件,多用户网络商城题目 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums [2, 1] ,可以在 2 之前添加 ,在 1 之前添加 - &#x…

题目

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

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

  • 例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得到表达式 "+2-1" 。

返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。

示例 1:

输入:nums = [1,1,1,1,1], target = 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

示例 2:

输入:nums = [1], target = 1
输出:1

提示:

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

解答

源代码

class Solution {public int findTargetSumWays(int[] nums, int target) {int sum = 0;for (int num : nums) {sum += num;}if (sum - target < 0 || (sum - target) % 2 == 1) {return 0;}int len = nums.length, neg = (sum - target) / 2;int[][] dp = new int[len + 1][neg + 1];dp[0][0] = 1;for (int i = 1; i < len + 1; i++) {int num = nums[i - 1];for (int j = 0; j < neg + 1; j++) {dp[i][j] = dp[i - 1][j];if (j >= num) {dp[i][j] += dp[i - 1][j - num];}}}return dp[len][neg];}
}

总结

记数组的元素和为 sum,添加 - 号的元素之和为 neg,则其余添加 + 的元素之和为 sum−neg,得到的表达式的结果为:

(sum − neg) − neg = sum − 2 * neg = target  即 neg = (sum − target) / 2

由于数组 nums 中的元素都是非负整数,neg 也必须是非负整数,所以上式成立的前提是 sum − target 是非负偶数。若不符合该条件可直接返回 0。

若上式成立,问题转化成在数组 nums 中选取若干元素,使得这些元素之和等于 neg,计算选取元素的方案数。我们可以使用动态规划的方法求解。

定义二维数组 dp,其中 dp[i][j] 表示在数组 nums 的前 i 个数中选取元素,使得这些元素之和等于 j 的方案数。假设数组 nums 的长度为 n,则最终答案为 dp[n][neg]。

当没有任何元素可以选取时,元素和只能是 0,对应的方案数是 1,因此动态规划的边界条件是:

当j = 0时,dp[0][j] = 1;当j > 0时,dp[0][j] = 0;

当 1 ≤ i ≤ n 时,对于数组 nums 中的第 i 个元素 num(i 的计数从 1 开始),遍历 0 ≤ j ≤ neg,计算 dp[i][j] 的值:

如果 j < num,则不能选 num,此时有 dp[i][j] = dp[i − 1][j];

如果 j ≥ num,则如果不选 num,方案数是 dp[i−1][j],如果选 num,方案数是 dp[i − 1][j − num],此时有 dp[i][j]=dp[i − 1][j] + dp[i − 1][j − num]。

因此状态转移如下:

当j < nums[i]时,dp[i][j] = dp[i−1][j];当j >= nums[i]时, dp[i][j] = dp[i - 1][j] + dp[i − 1][j − nums[i]]。

最终得到 dp[n][neg] 的值即为答案。

http://www.dt0577.cn/news/51760.html

相关文章:

  • 广东网站建设价格成都搜索优化整站优化
  • 在线手机网站建设seo销售话术开场白
  • 在线做流程图的网站电商数据查询平台
  • 适合个人做的网站有哪些东西新冠咳嗽怎么办
  • 成都新津县建设网站百度应用宝
  • 有没有会计做兼职的网站中国站长之家域名查询
  • 做网站需要花多少钱备案域名
  • 龙岗网站制作资讯十大室内设计网站
  • php网站欣赏下百度安装
  • 个人网站怎么做代码人工智能培训课程
  • 网站建设专业英文网络软文范例
  • 学校设计网站方案千博企业网站管理系统
  • 北京商城网站开发公司网站排名优化客服
  • 番禺网站 建设信科网络网站赚钱
  • 自己怎么创网站网上兼职外宣推广怎么做
  • 网站的友情链接怎么做可以免费领取会员的软件
  • 南京市环保局官方南京做网站怎么弄一个自己的网址
  • 备案个人网站名称推荐网站seo推广招聘
  • 动漫网站logo如何开发网站
  • 深圳网站制作济南百度 指数
  • php网页设计培训成都seo工程师
  • 个人做电商网站赚钱吗怎么做品牌推广和宣传
  • 网站套模板教程天津网站建设公司
  • 做一个招聘信息的网站_用什么做网站的软件网站软件推荐
  • 做爰动态视频网站短视频seo排名
  • 网站建设图标图片销售网站有哪些
  • 邢台网站建设服务商深圳网络推广外包公司
  • 网站建设发布百度关键词seo公司
  • 上海权威发布最新消息seo英文怎么读
  • 不备案的网站有那些google下载官网