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

长沙网络工程学院天津seo管理平台

长沙网络工程学院,天津seo管理平台,wordpress主题 kratos,wordpress多套主题题目来源:https://leetcode.cn/problems/target-sum/description/ C题解(来源代码随想录):将该问题转为01背包问题。 假设加法的总和为x,那么减法对应的总和就是sum - x。所以我们要求的是 x - (sum - x) target。x …

题目来源:https://leetcode.cn/problems/target-sum/description/

 

 C++题解(来源代码随想录):将该问题转为01背包问题。

假设加法的总和为x,那么减法对应的总和就是sum - x。所以我们要求的是 x - (sum - x) = target。x = (target + sum) / 2。此时问题就转化为,装满容量为x的背包,有几种方法

  1. 确定dp数组以及下标的含义。(1)dp[j] 表示:填满j(包括j)这么大容积的包,有dp[j]种方法。(2)也可以使用二维dp数组来求解本题,dp[i][j]:使用 下标为[0, i]的nums[i]能够凑满j(包括j)这么大容量的包,有dp[i][j]种方法。
  2. 确定递推公式。只要搞到nums[i],凑成dp[j]就有dp[j - nums[i]] 种方法。
  3. dp数组如何初始化。dp[0] = 1。
  4. 确定遍历顺序。对于01背包问题一维dp的遍历,nums放在外循环,target在内循环,且内循环倒序。
// 代码随想录版本
class Solution {
public:int findTargetSumWays(vector<int>& nums, int S) {int sum = 0;for (int i = 0; i < nums.size(); i++) sum += nums[i];if (abs(S) > sum) return 0; // 此时没有方案if ((S + sum) % 2 == 1) return 0; // 此时没有方案int bagSize = (S + sum) / 2;vector<int> dp(bagSize + 1, 0);dp[0] = 1;for (int i = 0; i < nums.size(); i++) {for (int j = bagSize; j >= nums[i]; j--) {dp[j] += dp[j - nums[i]];}}return dp[bagSize];}
};
// 一维数组版本
class Solution {
public:int findTargetSumWays(vector<int>& nums, int target) {// left + right = sum;// left - right = target;// left = (sum + target) / 2;// 01背包:背包总量left,价值和为j的个数为dp[j]// dp[j] = dp[j]+dp[j-nums[i]]int len = nums.size();int sum = 0;for(int i = 0; i < len; i++) {sum = sum + nums[i];}if(sum < target || target < -sum) return 0;else if((sum - target) % 2 == 1) return 0;int left = (sum + target) / 2;vector<int> dp(left+1, 0);dp[0] = 1;       // 初始化if(nums[0] <= left) dp[nums[0]]++;  // 考虑left = nums[0] = 0的情况for(int i = 1; i < len; i++) {for(int j = left; j >= nums[i]; j--) {dp[j] = dp[j] + dp[j-nums[i]];}}return dp[left];}
};
// 二维数组版本
class Solution {
public:int findTargetSumWays(vector<int>& nums, int target) {// left + right = sum;// left - right = target;// left = (sum + target) / 2;// 01背包:背包总量left,在0-i个物品中,价值和为j的个数为dp[i][j]// dp[i][j] = dp[i-1][j]+dp[i-1][j-nums[i]]int len = nums.size();int sum = 0;for(int i = 0; i < len; i++) {sum = sum + nums[i];}if(sum < target || target < -sum) return 0;else if((sum - target) % 2 == 1) return 0;int left = (sum + target) / 2;vector<vector<int>> dp(len, vector<int>(left+1, 0));dp[0][0] = 1;       // 初始化if(nums[0] <= left) dp[0][nums[0]]++;  // 考虑left = nums[0] = 0的情况for(int i = 1; i < len; i++) {for(int j = 0; j <= left; j++) {if(j < nums[i]) dp[i][j] = dp[i-1][j];else dp[i][j] = dp[i-1][j] + dp[i-1][j-nums[i]];}}return dp[len-1][left];}
};

http://www.yidumall.com/news/1535.html

相关文章:

  • 网站估值怎么做aso优化是什么
  • 官方网站下载万能钥匙百度视频推广怎么收费
  • 微信网站开发多少钱站长之家 站长工具
  • 腾讯云怎么备案网站如何让百度搜索到自己的网站
  • 艾睿网站建设第三方网站流量统计
  • pc网站和手机网站营销推广是什么意思
  • 黑五手表网站百度排行
  • 做网站需要电脑吗it学校培训学校哪个好
  • 做网站的工作室坚决把快准严细实要求落实到位
  • 区校合作网站建设方案沈阳seo推广
  • 昆明网站建设制作站优化
  • 嘉兴手机模板建站电商代运营一般收多少服务费
  • 做网站 需求怎么写百度seo关键词排名优化工具
  • 游戏抽奖网站用java怎么做做网站怎么赚钱
  • 网站的后缀名怎么建设seo快速排名关键词
  • 网络平台监管投诉电话上海搜索排名优化
  • 网站维保方法网站建设百度推广
  • 有关网站建设的文章搜索引擎优化服务
  • 上海松江品划做网站刷赞抖音推广网站
  • wordpress斜杠自动成-宁波好的seo外包公司
  • 自助建站模板使用方法服务器域名查询
  • 导购类网站建设多少钱电脑优化
  • 教育网站制作下载拓客渠道有哪些
  • 中山视角做网站的公司竞价网络推广外包
  • 一个虚拟主机可以做几个网站百度手机助手应用商店下载
  • 网络公司网站建设规划南宁 百度网盘
  • 汽车之家网站做的很烂个人如何做百度推广
  • 建设银行不弹出网站友链查询站长工具
  • 泉州晋江网站建设费用长沙seo就选智优营家
  • 武汉比较大的做网站的公司自己做网站如何赚钱