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

网站建设详细报价免费刷推广链接的网站

网站建设详细报价,免费刷推广链接的网站,湘潭做网站优化,wordpress牧风代码随想录算法训练营第四十四天| 01背包问题 二维、01背包问题 一维、416. 分割等和子集 01背包问题 二维01背包问题 一维416. 分割等和子集 第三个没思路。 01背包问题 二维 文章链接 思路:dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包…

代码随想录算法训练营第四十四天| 01背包问题 二维、01背包问题 一维、416. 分割等和子集

  • 01背包问题 二维
  • 01背包问题 一维
  • 416. 分割等和子集

第三个没思路。

01背包问题 二维

文章链接

思路:dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。
不放物品i:由dp[i - 1][j]推出,即背包容量为j,里面不放物品i的最大价值,此时dp[i][j]就是dp[i - 1][j]。(其实就是当物品i的重量大于背包j的重量时,物品i无法放进背包中,所以背包内的价值依然和前面相同。)
放物品i:由dp[i - 1][j - weight[i]]推出,dp[i - 1][j - weight[i]] 为背包容量为j - weight[i]的时候不放物品i的最大价值,那么dp[i - 1][j - weight[i]] + value[i] (物品i的价值),就是背包放物品i得到的最大价值
所以递归公式: dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);

代码

void test_2_wei_bag_problem1() {vector<int> weight = {1, 3, 4};vector<int> value = {15, 20, 30};int bagweight = 4;// 二维数组vector<vector<int>> dp(weight.size(), vector<int>(bagweight + 1, 0));// 初始化for (int j = weight[0]; j <= bagweight; j++) {dp[0][j] = value[0];}// weight数组的大小 就是物品个数for(int i = 1; i < weight.size(); i++) { // 遍历物品for(int j = 0; j <= bagweight; j++) { // 遍历背包容量if (j < weight[i]) dp[i][j] = dp[i - 1][j];else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);}}cout << dp[weight.size() - 1][bagweight] << endl;
}int main() {test_2_wei_bag_problem1();
}

01背包问题 一维

文章链接

思路:用一维来解决背包问题要注意,体积应该从大到小递减,如果从小到大递增遍历,会重复加入物品。应该先遍历物品,然后遍历体积,不能颠倒。颠倒会导致物品只会添加一次。

代码

void test_1_wei_bag_problem() {vector<int> weight = {1, 3, 4};vector<int> value = {15, 20, 30};int bagWeight = 4;// 初始化vector<int> dp(bagWeight + 1, 0);for(int i = 0; i < weight.size(); i++) { // 遍历物品for(int j = bagWeight; j >= weight[i]; j--) { // 遍历背包容量dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);}}cout << dp[bagWeight] << endl;
}int main() {test_1_wei_bag_problem();
}

416. 分割等和子集

题目链接:416. 分割等和子集
文章链接
状态:没思路,不知道怎么转化为背包问题。

思路:体积从sum / 2开始递减。

代码

class Solution {
public:bool canPartition(vector<int>& nums) {int sum = 0;vector<int> dp(10001,0);for (int i = 0; i < nums.size(); i++)sum += nums[i];int target = sum / 2;if (sum % 2 == 1) return false;for (int i = 0; i < nums.size();i++)for (int j = target; j >= nums[i]; j--){dp[j] = max(dp[j], dp[j - nums[i]] + nums[i]);}if (dp[target] == target) return true;else return false;}
};
http://www.dtcms.com/wzjs/45519.html

相关文章:

  • WordPress网站404公益页面西安网络推广公司
  • 什么是网站单页电子商务主要干什么
  • 家庭宽带做网站稳定互联网十大企业
  • 襄阳做网站公司有哪些百度搜索引擎优化方案
  • 已有域名 wordpress西安seo引擎搜索优化
  • 开网站做赌博赚钱吗关键词分类
  • 为什么要建设就业指导网站公关
  • 电脑版qq在线登录网页入口安卓排名优化
  • wordpress入侵教程广州seo推荐
  • 2023年最新法定传染病有哪些公司网站seo外包
  • 企业如何做好网站运营管理互联网广告投放
  • 如何网站公司小程序企业邮箱
  • 后台java语言做网站全国最新疫情最新消息
  • 做网站的软件公司电商运营公司
  • 上海企业网站排名优化c++线上培训机构哪个好
  • 织梦修改网站标题seo营销网站的设计标准
  • 石首建设局网站泰州网站建设优化
  • 城市分类信息网站建设宁波seo搜索优化费用
  • 网页的优化与发布sem优化服务公司
  • 阿里云服务器怎么部署网站百度com百度一下你
  • 咋样查看网站用什么编程语言做的企业宣传册模板
  • 用什么网站做框架图湖南网络优化服务
  • 网站建设维修服务流程电商代运营十大公司排名
  • 深圳市政府网站建设公司惠州百度seo
  • 万网wordpress安装关键词优化公司网站
  • 合肥做网站web0551广州各区正在进一步优化以下措施
  • 做wap网站能火吗windows优化大师是什么软件
  • 为什么要做外贸网站昆明自动seo
  • 网站备案负责人修改免费b站软件推广网站2023
  • 优秀网站及网址快照关键词优化