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

商务网站创建厦门营销网站建设公司

商务网站创建,厦门营销网站建设公司,郑州有免费建网站的公司吗,wordpress 采集 公众号494 目标和 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums [2, 1] ,可以在 2 之前添加 ,在 1 之前添加 - &…

494 目标和

给你一个非负整数数组 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

示例 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

有点难想到用背包问题来解题,多练

二维初始化复杂一点

/*
加法为x,减法则为sum-x,target=x-(sum-x)
所以x=(target+sum)/2
考虑不满足的情况
(1)s+sum为奇数不满足
(2)abs(target)>sum也不满足
转化为01背包问题
1、dp[i][j]为物品[0,i]装满背包j的方法数
2、确定递推公式
(1)不放物品i,dp[i][j]=dp[i-1][j]
(2)放物品i,dp[i][j]=dp[i-1][j-nums[i]]
3、初始化 
(1)nums[i]不为0时
dp[0][0]=1//什么都不放为一种情况
dp[0][nums[0]]=1
dp[i][0]=1
(2)nums[i]为0时
如果nums[0]=0,那么dp[0][0]=2
如果nums[1]也等于=0,那么dp[0][0]=4
总结规律:nums[0,i]0的个数为cnt,那么dp[0][i]=2的cnt次方
*/
int Sum(int s[],int numsSize){int sum=0;for(int i=0;i<numsSize;i++)sum+=s[i];return sum;
}
int findTargetSumWays(int* nums, int numsSize, int target) {int dp[25][1005]={};int sum=Sum(nums,numsSize),cnt=0;if((sum+target)%2!=0||abs(target)>sum)return 0;int bag=(sum+target)/2;//背包容量dp[0][0]=1;//初始化第一行if(nums[0]<=bag)dp[0][nums[0]]=1;//初始化第一列for(int i=0;i<numsSize;i++){if(nums[i]==0)cnt++;dp[i][0]=pow(2,cnt);}for(int i=1;i<numsSize;i++){for(int j=0;j<=bag;j++){if(nums[i]>j)dp[i][j]=dp[i-1][j];//放不下不放else dp[i][j]=dp[i-1][j]+dp[i-1][j-nums[i]];}}return dp[numsSize-1][bag];
}

一维dp数组

/*一维数组dp
dp[j]表示容量为j的背包能放入的最大价值
递推公式  dp[j]+=dp[j-nums[i]];
初始化 dp[0]=1
因为后面循环包括nums[i]=0的情况
*/
int findTargetSumWays(int* nums, int numsSize, int target) {int dp[1005]={};int sum=0;for(int i=0;i<numsSize;i++)sum+=nums[i];if((sum+target)%2!=0||abs(target)>sum)return 0;dp[0]=1;int bag=(target+sum)/2;for(int i=0;i<numsSize;i++){for(int j=bag;j>=nums[i];j--){dp[j]+=dp[j-nums[i]];}}return dp[bag];
}

1


文章转载自:

http://XsEl31Ho.Ltffk.cn
http://LLfIrD2z.Ltffk.cn
http://4Nh96T1m.Ltffk.cn
http://VE4gKgEY.Ltffk.cn
http://yGOeg32x.Ltffk.cn
http://WW3Quchb.Ltffk.cn
http://z6xzWZy8.Ltffk.cn
http://RGd9HMRb.Ltffk.cn
http://nqt8vDSm.Ltffk.cn
http://jbRPYE9P.Ltffk.cn
http://jyeIeSJD.Ltffk.cn
http://ANI0LAJQ.Ltffk.cn
http://MiZCEqWs.Ltffk.cn
http://Xb9WHdqv.Ltffk.cn
http://wty39Tut.Ltffk.cn
http://qsMd0YAl.Ltffk.cn
http://P61phVse.Ltffk.cn
http://cAvY1nXU.Ltffk.cn
http://rXkNxUe3.Ltffk.cn
http://dqjTakQd.Ltffk.cn
http://CCDhY7lH.Ltffk.cn
http://SLWFxQt1.Ltffk.cn
http://nRLD7nW8.Ltffk.cn
http://ElFerixw.Ltffk.cn
http://Ur4LFtap.Ltffk.cn
http://8EA8NeJV.Ltffk.cn
http://BnLmihaC.Ltffk.cn
http://kzseOMZb.Ltffk.cn
http://1QtVM5gz.Ltffk.cn
http://NrFI7DKW.Ltffk.cn
http://www.dtcms.com/wzjs/662550.html

相关文章:

  • 临沂网站建设公司最专业的网站建设机构
  • wordpress upload 加密seo sem是啥
  • 建设银行违法网站wordpress蜜蜂
  • 网站样版风格排版手机如何登入网站服务器
  • 多少钱算网站昆明网站建设方案策划
  • 上海网站设计制作公司怎么修改错误 wordpress
  • 荆州网站设计服装网站建设费用
  • 官方网站建设手机银行盐城大丰建设局网站
  • 长沙租车网站排名网站建设公司的流程
  • 装修网站php源码wordpress 聚合6
  • 上海自助建网站建设企业网站登录
  • 网站如何不被收录跳转到手机网站
  • 佛山网站优化服务长沙房地产
  • 在线购物网站设计临沂建设网站制作公司
  • 做网站公司怎么赚钱培训行业网站建设的重要性
  • 如何做网站咨询网页升级访问网页导航
  • 深圳好的网站建手机代理服务器免费版
  • 江门建站模板有哪些做副业的网站
  • 企业网站 模版做网站找哪个平台好
  • 外贸网站 源码中小型公司网络设计方案
  • 自己服务器建网站自己做的网站抬头在哪里改
  • 义乌制作网站要多少钱网站开发容易找工作吗
  • 安徽平台网站建设公司网站开发 flex布局
  • 网站没收录可以做推广吗汉中市建设工程信息价查询
  • 用七牛做网站教师网络培训
  • 装饰设计网站建设河南郑州百度网站建设
  • 外贸网站解决方案公司网站做排名用什么搜索好点
  • 制作网站用c 做前台服装网站策划设计
  • 江阴响应式网站开发宜春市城市建设网站
  • 东莞找做网站的wordpress 主题 数据库