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

公司禁用网站怎么做郑州抖音推广

公司禁用网站怎么做,郑州抖音推广,专业网站开发费用,深圳网站设计与开发这段代码实现了一个多重背包问题的动态规划解法。多重背包问题与完全背包问题类似,但每个物品有其数量限制。以下是代码的详细思路解析: 1. 问题背景 给定 n 个物品,每个物品有其体积 v[i]、价值 w[i] 和数量 s[i],以及一个容量为…

这段代码实现了一个多重背包问题的动态规划解法。多重背包问题与完全背包问题类似,但每个物品有其数量限制。以下是代码的详细思路解析:


1. 问题背景

给定 n 个物品,每个物品有其体积 v[i]、价值 w[i] 和数量 s[i],以及一个容量为 m 的背包。目标是选择物品使得总价值最大,同时总容量不超过背包的容量。与完全背包问题不同的是,多重背包问题中每个物品的数量是有限的。

2. 动态规划的概念

动态规划是一种常用的算法技巧,用于解决具有重叠子问题和最优子结构的问题。在多重背包问题中,动态规划通过维护一个二维数组 f 来记录不同状态下的最大价值。

3. 代码逻辑解析

(1) 输入数据
cin >> n >> m;
for (int i = 1; i <= n; i++) cin >> v[i] >> w[i] >> s[i];
  • 用户输入物品数量 n 和背包容量 m

  • 对于每个物品,输入其体积 v[i]、价值 w[i] 和数量 s[i]

(2) 动态规划状态转移
for (int i = 1; i <= n; i++)for (int j = 0; j <= m; j++)for (int k = 0; k <= s[i] && k * v[i] <= j; k++)f[i][j] = max(f[i][j], f[i - 1][j - v[i] * k] + w[i] * k);
  1. 外层循环

    • 遍历每个物品,从第 1 个到第 n 个。

  2. 中层循环

    • 遍历背包的每个容量,从 0 到 m

  3. 内层循环

    • 遍历每个物品可以被选择的次数 k,从 0 到 s[i](即当前物品的最大数量),并且确保 k * v[i] <= j(即当前容量可以容纳的最大次数)。

  4. 状态转移

    • f[i][j] 表示前 i 个物品在容量为 j 的背包下的最大价值。

    • 不选择第 i 个物品f[i][j] = f[i - 1][j],即前 i-1 个物品在容量为 j 的背包下的最大价值。

    • 选择第 i 个物品 k:更新 f[i][j]f[i - 1][j - v[i] * k] + w[i] * k,即前 i-1 个物品在容量为 j - v[i] * k 的背包下的最大价值加上第 i 个物品的价值乘以选择次数 k

(3) 输出结果
cout << f[n][m] << endl;
  • 输出最终的最大价值,即 f[n][m]

4. 代码效率分析

  • 时间复杂度

    • 三层循环遍历所有物品、所有容量和所有选择次数,时间复杂度为 O(n × m × s_max),其中 s_max 是最大的物品数量。

  • 空间复杂度

    • 使用了一个二维数组 f,空间复杂度为 O(n × m)

5. 示例运行

输入:
4 5
1 2 3
2 4 1
3 4 3
4 5 2
输出:
10

6. 总结

这段代码的核心思路是通过动态规划解决多重背包问题。通过维护一个二维数组 f,记录不同状态下的最大价值,并通过状态转移方程更新最大价值,最终找到在给定背包容量下的最大价值。这种方法的时间复杂度为 O(n × m × s_max),空间复杂度为 O(n × m),适用于中等规模的多重背包问题。

完整代码

#include<bits/stdc++.h>
using namespace std;// 定义常量 N 作为数组的最大长度
const int N = 110;
// n 表示物品的种类数,m 表示背包的容量
int n, m;
// v 数组存储每种物品的体积,w 数组存储每种物品的价值,s 数组存储每种物品的数量上限
int v[N], w[N], s[N];
// f 数组是二维数组,f[i][j] 表示前 i 种物品,背包容量为 j 时能获得的最大价值
int f[N][N];int main()
{// 输入物品的种类数 n 和背包的容量 mcin >> n >> m;// 循环读入每种物品的体积、价值和数量上限for(int i = 1; i <= n; i ++) cin >> v[i] >> w[i] >> s[i];// 动态规划过程,外层循环遍历每种物品for(int i = 1; i <= n; i ++)// 中层循环遍历背包的所有可能容量for(int j = 0; j <= m; j ++)// 内层循环枚举当前物品 i 放入的数量 k,k 要满足不超过该物品的数量上限 s[i] 且放入 k 个物品后的体积不超过当前背包容量 jfor(int k = 0; k <= s[i] && k * v[i] <= j; k ++)// 比较当前记录的最大价值 f[i][j] 和放入 k 个第 i 种物品后的价值// 放入 k 个第 i 种物品后,剩余容量为 j - v[i] * k,之前 i - 1 种物品在该剩余容量下的最大价值为 f[i - 1][j - v[i] * k]// 放入 k 个第 i 种物品的价值为 w[i] * kf[i][j] = max(f[i][j], f[i - 1][j - v[i] * k] + w[i] * k);// 输出前 n 种物品,背包容量为 m 时能获得的最大价值cout << f[n][m] << endl;return 0;
}


文章转载自:

http://xs0QdAXM.sjsks.cn
http://qhxBD8zj.sjsks.cn
http://8q494UIo.sjsks.cn
http://Oanp9oty.sjsks.cn
http://su2jLlTV.sjsks.cn
http://xq7bYOqT.sjsks.cn
http://X5IuqTYm.sjsks.cn
http://NB7EO3Fe.sjsks.cn
http://P06nzUod.sjsks.cn
http://1LZ6Yzve.sjsks.cn
http://4Nk8ckF2.sjsks.cn
http://DFNUQboZ.sjsks.cn
http://O3MuQhFQ.sjsks.cn
http://HcElEvKc.sjsks.cn
http://qwooww7g.sjsks.cn
http://g6DLcL4c.sjsks.cn
http://SvNQNQEV.sjsks.cn
http://yqc0zDWf.sjsks.cn
http://eCbGgG8Q.sjsks.cn
http://IWQ7nmWO.sjsks.cn
http://psmeAfSs.sjsks.cn
http://Pm4Nl4Q2.sjsks.cn
http://8CP1KbSn.sjsks.cn
http://xSwsGgBv.sjsks.cn
http://RGJULD4y.sjsks.cn
http://UtAZKMub.sjsks.cn
http://ifJhGhwt.sjsks.cn
http://gWdEekkF.sjsks.cn
http://ckfHpqUx.sjsks.cn
http://Xv4RBuF7.sjsks.cn
http://www.dtcms.com/wzjs/689620.html

相关文章:

  • 建设工程消防网站进入程序华大 网站建设
  • 本网站维护升级搜索引擎优化的概念是什么
  • 网站素材模板旅游微网站与微信网站
  • 小米盒子做网站项目加盟网
  • 厦门网站制作软件网站总体建设方面的优势与不足
  • 南通建设招聘信息网站石家庄网站开发多少钱
  • 网站域名地址新的网站平台如何做地推
  • 做设计网站的工作企业网站 seo怎么做
  • 深圳公司注册电话深圳百度推广优化
  • 关键词分类工具清智优化北京
  • 山西网站群建设网站管理服务
  • 怒江北京网站建设怎么把自己网站推广出去
  • 旅游网网站建设wordpress 输出文章标签
  • 通信工程建设网站wordpress面包屑代码
  • 网站平台方案设计班级文化墙创意设计图片
  • 公司网站建设服务费入什么科目鹿泉企业网站建设
  • 宠物网站建设目标wordpress宾馆模板
  • 龙岩建设局升降机网站网站建设与网页制作实训报告
  • 重庆光龙网站建设什么是网站接入商
  • 成都网站建设公司湖南岚鸿网站建设多久能学会
  • 宁波网站建设设计服务公司产品设计主要学什么
  • 哪有网站建设明细报价表做影视网站不备案
  • 网站制作详细流程wordpress in
  • 做网站用c语言吗php 购物网站开发
  • 网站源码交易平台代码多人在线网站开发
  • 网站建设与维护浙江省试题百度指数关键词未收录怎么办
  • 作为一个大学生网站 应该怎么做通过手机建设网站
  • 东莞常平网站设计公司做网站的费属于广告费么
  • 东莞做门户网站好的app开发公司
  • 山东华邦建设集团网站南昌哪个公司做网站好