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

规划一个电子商务网站招聘网站建设规划书

规划一个电子商务网站,招聘网站建设规划书,淘宝网官网登录首页,济宁贵网站建设一,背包问题 老规矩,上链接(http://t.csdn.cn/hEwvu) (1)01背包问题 给定一个承重量为C的背包,n个重量分别为w1​,w2​,...,wn​的物品,物品i放入背包能产生pi​(>0)的价值(i1,…

一,背包问题

老规矩,上链接(http://t.csdn.cn/hEwvu)

(1)01背包问题

给定一个承重量为C的背包,n个重量分别为w1​,w2​,...,wn​的物品,物品i放入背包能产生pi​(>0)的价值(i=1,2,...,n)。每个物品要么整个放入背包,要么不放。要求找出最大价值的装包方案。
 

输入格式:

输入的第一行包含两个正整数n和C(1≤n≤20),第二行含n个正整数分别表示n个物品的重量,第三行含n个正整数分别表示n个物品放入背包能产生的价值。

输出格式:

在一行内输出结果,包括最大价值装包方案的价值、具体装包方案,用空格隔开。具体装包方案是n个物品的一个子集,用长度为n的0、1串表示(1表示对应物品被选中,0表示没有被选中)。如果这样的0、1串不唯一,取字典序最大的那个串。

输入样例:

    4 9
    2 3 4 5
    3 4 5 7

输出样例:

12 1110

(注:1110 和0011都是价值最大的装包方案,取字典序最大的结果即为1110)

思想:最最经典的dp问题,画个图就明白了。

 AC代码

#include<bits/stdc++.h>
using namespace std;
const int N = 100;
int dp[N][N], w[N], val[N];int main()
{int n, m;cin >> n >> m;for (int i = 1; i <= n; i++) cin >> w[i];//重量for (int i = 1; i <= n; i++) cin >> val[i];//价值//求最大价值for (int i = 1; i <= n; i++) {for (int j = 0; j <= m; j++) {if (j >= w[i]) dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + val[i]);else dp[i][j] = dp[i - 1][j];}}cout << dp[n][m] << endl;//打印字典序for (int i = 1; i <= n; i++) {if (dp[i][m] - dp[i - 1][m] == 0) cout << "0";else cout << "1";}return 0;
}

利用滚动数组优化,将二维数组降为一维数组

#include<bits/stdc++.h>
using namespace std;
const int N = 1005;
int dp[N], t[N], val[N];int main()
{int time, n;cin >> time >> n;for (int i = 1; i <= n; i++) cin >> t[i] >> val[i];for (int i = 1; i <= n; i++) {//时间为j时的最大价值for (int j = time; j >= t[i]; j--) {//这里j倒序是为了防止重复拿同一件物品dp[j] = max(dp[j], dp[j - t[i]] + val[i]);}}cout << dp[time] << endl;return 0;
}

(2)完全背包问题

有一个容积为 V 的背包,同时有 n 种物品,每种物品均有各自的体积 w 和价值 v,每种物品的数量均为无限个,求使用该背包最多能装的物品价值总和。



疯狂的采药 - 洛谷

思路:我们此时在多家一重循环表示同一种物品的数量就可以了,那么我们的递推式就变为

dp[i][j] = max( dp[i-1][j] , dp[i-1][ j - k*w[i] ] + k*v[i] )

AC代码

#include<iostream>
using namespace std;const int N=1005;
const int M=105;
int n,m,maxValue,temp;
int dp[M][N],t[M],v[M];int main()
{cin>>n>>m;for(int i=1;i<=m;i++) cin>>t[i]>>v[i];for(int i=1;i<=m;i++)for(int j=1;j<=n;j++){maxValue=0;for(int k=0;k*t[i]<=j;k++){temp=dp[i-1][j-k*t[i]]+k*v[i];if(temp>maxValue) maxValue=temp;}dp[i][j]=maxValue;}cout<<dp[m][n]<<endl;return 0;
}

这段代码是不能通过测试的,因为本题的数据比较大,而且我们用了三重循环,时间复杂度比较高,所以此方法不行。

同样的,我们使用滚动数组进行优化。

#include<bits/stdc++.h>
using namespace std;
const int N = 1e7 + 5;
long long dp[N], t[N], val[N];//数据过大,开长整型int main()
{int time, n;cin >> time >> n;for (int i = 1; i <= n; i++) cin >> t[i] >> val[i];for (int i = 1; i <= n; i++) {for (int j = t[i]; j <=time; j++) {dp[j] = max(dp[j], dp[j - t[i]] + val[i]);}}cout << dp[time] << endl;return 0;
}

(3)

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

相关文章:

  • 网页设计素材包南昌seo管理
  • 专业郑州做网站的公司公司介绍50字
  • 浙江建设厅网站那三类人员建设网站的申请信用卡分期付款
  • wordpress 设置常规站点地址地方网站发展方向
  • 肇庆自助网站建设系统从零学习做网站
  • 树荫营销网站androidstudio开发app教程
  • 做地铁建设的公司网站免费发布工程信息网站
  • 网站建设公司的服务特点做网站的标性
  • 网站制作 意向单cms建站平台
  • 网站怎么设置支付博客网站 wordpress
  • 抄袭别人网站农家乐怎么做网站
  • 汽车网站营销上海徐汇区网站建设公司
  • 今科网站建设网站建设太金手指六六二七
  • 汽车网站开发与实现 论文龙川县建设网站
  • 网站建设及管理使用情况汇报网络域名是什么
  • 青岛做英文网站的公司wordpress 电商网站
  • wordpress分享视频大连百度网站排名优化
  • 销售推广做那个网站维护网站的一般方法
  • 泉州网站建设选择讯呢手机优化怎么解除
  • 成都营销型网站制作wordpress表格
  • 网站建设龙岗亚马逊做code的网站
  • 重庆企业网站开发方案wordpress主题中文主题下载
  • 福州专业网站设计网站建设采取招标的方式
  • 东营网站开发招聘lnmpa 搭建wordpress
  • 网站制作好以后怎么管理备案网站还是域名
  • 外贸网站推广方式可以把网站建设在云主机上吗
  • pc端网站布局c2c交易平台官网
  • 中标公示查询网站wordpress 淘宝客采集
  • 建材团购网站建设方案合肥网站建设公司 千鸟
  • 上海医疗器械网站前置审批网站logo源码