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

网站建设一龙条互动科技 网站建设

网站建设一龙条,互动科技 网站建设,网络推广的常用方法,wordpress大气自媒体C 01背包问题 问题简单描述 有N件物品和总容量为W的背包,每件物品只能使用一次。 设第i件物品的价值为v(i),第i件物品的重量为 w(i)。 求解: 问应将哪些物品放入背包中,在不超过最大容量的情况下…

C++ 01背包问题


问题简单描述

有N件物品和总容量为W的背包,每件物品只能使用一次。
设第i件物品的价值为v(i),第i件物品的重量为 w(i)。

求解: 问应将哪些物品放入背包中,在不超过最大容量的情况下使得总价值最大?

算法1实现:

#include<algorithm>
#include<stdio.h>
#include<time.h>
#include<stdlib.h> 
using namespace std;
const int MAXL = 1e5;
int w[MAXL+1],v[MAXL+1],f[MAXL+1][MAXL+1]; 
clock_t start ,stop;
int main(){int N,W;scanf("%d %d",&N,&W);for(int i = 1;i <= N;i++){scanf("%d %d",&w[i],&v[i]);}start = clock();for(int i = 1; i <= N;i ++ ){for(int j = 1;j <= W;j ++ ){if (j < w[i]) f[i][j] = f[i-1][j];else f[i][j] = max(f[i-1][j],f[i-1][j-w[i]]+v[i]);}}stop = clock();printf("%d",f[N][W]);printf("\n遍历时间%fs",(double(stop - start))/CLOCKS_PER_SEC);return 0;
}

其为两种转移方式:
1.当前容量小于第 i 件物品的重量
2.当前容量大于第 i 件物品的重量,则选择使得价值最大的物品

运行结果截图:

在这里插入图片描述

算法2实现:

空间改善后的算法

#include<bits/stdc++.h>
using namespace std;
const int L = 1e5;
int v[L+1],w[L+1],f[L+1];
clock_t start ,stop;int main(){int N,W;scanf("%d %d",&N,&W);for(int i = 0; i < N ; i++)scanf("%d%d",&w[i],&v[i]);memset(f,0,sizeof(f));start = clock();for(int i = 0;i < N; i++){for(int j = V;j > 0; j--){if ( w[i] <= j )f[j] = max(f[j],f[j-w[i]]+v[i]);}}printf("%d",f[W]);stop = clock();printf("\n遍历时间%.4fs",(double(stop - start))/CLOCKS_PER_SEC);return 0;
}
运行结果截图:

在这里插入图片描述


核心代码详解:

首先需要理解状态转移公式:

f[j] = max(f[j],f[j-w[i]]+v[i]);

这里的f数组代表的含义为当前价值,对于该数组,其下标代表的含义为当前容量。

max函数里两项为两种选择,我们就是需要找到最大价值情况的背包。
第一种选择为不取第i件物品放入背包
第二种选择为取第i件物品放入背包
对于第一种选择,当前的容量应该不变,当前的价值也不发生变化。
对于第二种选择,当前容量需要减少第i件的重量以及当前价值需要增加相应的价值。
对于遍历,首先最外层循环即为遍历每件物品,选择其中一些物品放入背包;对于第二层循环即从当前背包的最大容量逐渐递减遍历,每次当前价值与上一次的价值进行比较,选择相应容量下的最大价值覆盖;对于该层的 if 语句只是边界条件,即当前背包容量必须大于等于需要放入的物品重量,防止溢出。

for(int i = 0;i < N;i++){for(int j = V;j > 0;j--){if (w[i] <= j )f[j] = max(f[j],f[j-w[i]]+v[i]);}}

最终输出的结果为:

printf("%d",f[V]);

为什么会是f数组最后一个?
通过算法的迭代,此时它表示的容量就是V的最大价值。


http://www.yayakq.cn/news/261519/

相关文章:

  • 网页游戏排行榜前十名评论seo精准培训课程
  • 广西网站建设哪家强物联网软件开发平台
  • 做企业网站用什么框架企业工商信息查询app
  • 网站首页图片怎么更换农村自建房设计图app
  • 做新网站都需要准备什么wordpress自定义发文章界面
  • 网页设计师 培训wordpress KeyWords优化
  • 郑州建站以来中国十大it培训机构排名
  • 肇庆网站建设制作建设局网站瓯龙建州府3号楼
  • 北京企业建设网站公司哪家好创意灵感网站
  • 服装公司网站建设规划方案wordpress重复评论
  • 长春网站建设排名大学生做网站赚钱流程
  • 网站制作 文案做灯箱的网站
  • 惠州做网站电话python可以做app开发吗
  • 天津网站建设专家郑州轨道网站开发
  • 专业团队高端网站制作寻找昆明网站建设
  • 湖南专业做网站公司排名郴州网站建设设计
  • 耐克运动鞋网站建设规划书框架网站建设钅金手指排名十五
  • 如何做的网站手机可以用网站建设开发合同模板下载
  • 外贸假发 网站广西网站建设软件推广
  • 网站整站下载器 下载后台开发软件自学步骤
  • 网站建设用的服务器网站焦点图设计
  • 西安查派网站建设wordpress调用多媒体
  • 建设银行苏州网站专门做网络的公司
  • 创意网站 模板设计营销型网站
  • 小米的企业网站建设思路郑州网站建设网络推广
  • 网站首页大图素材个人网站可以注册com域名吗
  • 中介如何做网站收客最好的网站开发系统
  • 学校网站建设项目可行性分析公司支付的网站建设如何入账
  • 建设部官方网站北邻京网站茵建设
  • 网站制作软件手机百度权重优化软件