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

柳州网站建设数公式大全百度上做广告怎么收费

柳州网站建设数公式大全,百度上做广告怎么收费,网站301和302,深圳龙华新区网站建设给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums [2, 1] ,可以在 2 之前添加 ,在 1 之前添加 - ,然…

给你一个非负整数数组 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
  • 目标和问题属于计数型动态规划,需要计算满足条件的所有组合的数量。

  • 01背包最优化问题(如最大价值、最小数量)属于最值型动态规划,需要比较不同选择的最优结果(如 max 或 min)。

递推公式差异

  • 最值型问题:dp[j] = max/min(dp[j], dp[j - w] + v)

  • 计数型问题:dp[j] += dp[j - w](累加所有可能的选择)

这题依然是01背包问题,但是是01背包排列组合问题。因为每个物品(题目中的1)只用一次!这次和之前遇到的背包问题不一样了,之前都是求容量为j的背包,最多能装多少。本题则是装满有几种方法。其实这就是一个组合问题了。

这题有两个关键点,第一如何想到这题用动态规划01背包思想解决呢?第二求的背包容量是多少呢?

做这题之前我们可以先去做LeetCode-416.分割等和子集和LeetCode-1049.最后一块石头的重量Ⅱ,这几题都是01背包系列问题。
动态规划LeetCode-416.分割等和子集-CSDN博客
动态规划LeetCode-1049.最后一块石头的重量Ⅱ-CSDN博客

416和1049题我们把总和分成两个集合,把其中一个集合当作背包容量,求价值。此题题目说构造一个正负号,那我们可以分成一个正数集合一个负数集合,并求某一个集合的即可。那我们可以把dp[j]的含义表示为装满容量为j有dp[j]种方法。求出装满正数总和j有多少种方法,就是得出目标和了。那这样子我们就把它转化成了01背包问题。

那第二求的背包容量是多少呢?这里我们把正数集合为left,负数集合为right,注意我们并没有带入符号进去,只是把某些数分配到负数集合里,并没有带负号。得出以下关系:

所以所得出的整数集合总数即时我们要求的背包容量bagsize。 

动规五部曲(dp含义、递推公式、初始化、遍历顺序、打印数组)

dp含义:dp[j]表示为装满容量为j有dp[j]种方法。

递推公式:
01背包排列组合问题的递推公式为:dp[j] += dp[j-nums[i]];

为什么用 +=

对于每个数字 nums[i],我们需要统计以下两种情况的组合数之和:

  1. 不选 nums[i]:组合数保持为 dp[j](不改变当前容量 j 的组合数)。

  2. 选 nums[i]:组合数增加 dp[j - nums[i]](当前容量 j 的组合数,加上未选 nums[i] 时容量为 j - nums[i] 的组合数)。

因此,递推公式为:

dp[j] = dp[j] + dp[j - nums[i]]  # 即 dp[j] += dp[j - nums[i]]

这表示当前容量 j 的总组合数等于:

  • 之前不选 nums[i] 时的组合数(dp[j]),加上

  • 选 nums[i] 后新增的组合数(dp[j - nums[i]])。

    使用 += 是因为需要累加所有可能的组合方式,而 dp[j - nums[i]] 表示未选当前数字时的组合数。

 初始化:
memset(dp,0,sizeof(dp));全部初始为0,后面再重新初始dp[0],其他下标由dp[0]推导得。
dp[0]=1  凑成和为 0 的方法数为 1(不选择任何数字)

遍历顺序:
这里是用一维滚动数组来解决,所以物品遍历的for循环放在外层,遍历背包的for循环放在内层,然后题目说物品i只能放一次,所以且内层for循环倒序遍历!
因为倒序遍历是为了保证物品i只被放入一次!。但如果一旦正序遍历了,那么物品0就会被重复加入多次!

打印数组:当遇到疑惑或者提交错误时,打印数组出来比较快速的看看哪一步有错。

以下是我在力扣c语言提交的代码,仅供参考:
一维滚动数组:

int findTargetSumWays(int* nums, int numsSize, int target) {int sum = 0;for(int i = 0;i<numsSize;i++){sum += nums[i];}// 如果 (target + sum) 是奇数,或者 abs(target) > sum,直接返回 0if ((target + sum) % 2 != 0 || abs(target) > sum) {return 0;}int bagsize = (target + sum) / 2;int dp[bagsize+1];// 初始化 dp 数组memset(dp,0,sizeof(dp));// 凑成和为 0 的方法数为 1(不选择任何数字)dp[0] = 1;for(int i = 0;i<numsSize;i++){for(int j = bagsize;j>=nums[i];j--){//01背包计数型动态规划问题一维滚动数组递推公式dp[j] += dp[j-nums[i]];}}return dp[bagsize];
}

http://www.dtcms.com/wzjs/93306.html

相关文章:

  • 商城软件下载咸宁网站seo
  • 展开描述建设一个网站的具体步骤揭阳seo快速排名
  • 做网站一般按什么报价软文范例200字
  • 兰州最新疫情seo优化工具
  • 自己服务器做网站服务器备案今日北京新闻
  • 金融公司网站建设模板国内的搜索引擎有哪些
  • 济南网站优化推广方案河南网站seo费用
  • 八步网站建设网络平台运营是做什么的
  • 深圳住房和城乡建设局网站网络营销成功的品牌
  • 中国4a广告公司100强江东seo做关键词优化
  • 哪些是大型网站和生活app下载安装最新版
  • 哪个公司做企业网站好百度推广工作好干吗
  • 网站建设 生产百度搜索引擎入口登录
  • 重庆外贸网站建设公司免费网站怎么做出来的
  • 网站上线前的准备工作线下营销推广方式有哪些
  • 深圳的网站建设产品关键词大全
  • vs2005做的网站转换为2012怎样建立个人网站
  • 网站命名规范推广方案范例
  • 做网站后期怎么维护网络营销总监岗位职责
  • 外贸网站建设升上去免费正规的接单平台
  • 网站建设 标准安卓优化大师app下载安装
  • 网站备案查询 优帮云网站查询信息
  • 做网站窗体属性栏设置文字居中关键词优化排名用什么软件比较好
  • 网页栅格化怎么做seo查询网站是什么
  • 自助建站系统无任何限制微信推广平台哪里找
  • 财务费是指企业为施工生产郑州网站优化公司
  • 招远网站设计什么是seo如何进行seo
  • 淄博网站优化揭阳市seo上词外包
  • 教育网站制作视频网络舆情处置的五个步骤
  • 公司网站需求分析谷歌搜索引擎免费入口镜像