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

合山市网站wordpress有必要加论坛吗

合山市网站,wordpress有必要加论坛吗,一分钟看懂seo,怎么样建立网站方案完全背包与01背包的区别 01背包对于一个物品只能选择一次,但是完全背包可以选择任意次; 思路 和01背包类似,01背包我们只需要判断选或不选,完全背包也是如此,不同的是,对于这个物品我们在判断选后在增加一…

完全背包与01背包的区别

01背包对于一个物品只能选择一次,但是完全背包可以选择任意次; 

思路

和01背包类似,01背包我们只需要判断选或不选,完全背包也是如此,不同的是,对于这个物品我们在判断选后在增加一次选择的机会,直到不选,跳转至下一个物品即可;

一般代码:

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

第k次,不选的话就是它本身,选的话就是直接选择k次即可;

当然这个代码在数据稍微大一点的时候就会超出时间限制;

#include<iostream>
using namespace std;
const int N=1004;
int f[N][N];
int w[N],v[N];int main()
{int n,m;cin>>n>>m;for(int i=1;i<=n;i++){cin>>v[i]>>w[i];}for(int i=1;i<=n;i++){for(int j=0;j<=m;j++){for(int k=0;k*v[i]<=j;k++){f[i][j]=max(f[i][j],f[i-1][j-k*v[i]]+k*w[i]);}}}cout<<f[n][m]<<endl;
}

优化思路

上面代码会超出时间限制是因为三层循环,下面我们来把第三层循环优化掉:

f[i][j]=max(f[i][j],f[i-1][j-v]+w,f[i-1][j-2*v]+2*w,f[i-1][j-3*v]+3*w......f[i-1][j-k*v]+k*w)

f[i][j-v]=max(             f[i][j-v],f[i-1][j-2*v]+w,f[i-1][j-3*v]+2*w......f[i-1][j-k*v]+k*w)

f[i-1][j-v]+w,f[i-1][j-2*v]+2*w,f[i-1][j-3*v]+3*w......f[i-1][j-k*v]+k*w 不就是f[i][j-v]+w

那么我们可以得到:f[i][j]=max(f[i][j],f[i-1][j-v]+w)

这样我们不就可以不用写第三层循环了吗?

直接用:

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

优化代码:

#include<iostream>
using namespace std;
const int N=1004;
int f[N][N];
int w[N],v[N];int main()
{int n,m;cin>>n>>m;for(int i=1;i<=n;i++){cin>>v[i]>>w[i];}for(int i=1;i<=n;i++){for(int j=0;j<=m;j++){f[i][j]=f[i-1][j];if(j>=v[i])f[i][j]=max(f[i][j],f[i][j-v[i]]+w[i]);}}cout<<f[n][m]<<endl;
}

我们来看一下核心代码:

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

还记得01背包的代码吗?
             f[i][j] = f[i - 1][j];

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

是不是只有(红色标记):

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

再次优化代码:

注意:

这里我的j的大小是从小到大开始的:

01背包中,f[i][j]= max( f[i - 1][j],f[i - 1][j - v[i]] + w[i] );对于f[j]就相当于f[i-1][j]的大小,如果从小到大遍历,那么f[i-1][j]的大小就会发现变化,那么优化后的代码就不满足我们所推导的公式,所以我们要从大到小;

类比于01背包,完全背包的公式, f[i][j]=max(f[i][j],f[i][j-v[i]]+w[i]);对于这个公式如果从大到小就会改变f[i][j]的大小,不满足所推导的公式;

#include<iostream>
#include<cstring>
using namespace std;
const int N=1e4;
int f[N];
int w[N],v[N];int main()
{int n,m;cin>>n>>m;for(int i=0;i<n;i++)cin>>v[i]>>w[i];for(int i=0;i<n;i++){for(int j=v[i];j<=m;j++){f[j]=max(f[j],f[j-v[i]]+w[i]);}}cout<<f[m]<<endl;
}

以上就是全部内容!!

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

相关文章:

  • cnc强力磁盘 东莞网站建设中国建设银行网站查工资
  • 柳州做网站的企业网络推广方案100例
  • 建立网站该怎样做杭州市建设工程检测协会网站
  • 目前旅游网站开发江苏个人备案网站内容
  • 鞍山信息港招聘关键词优化费用
  • 提供网站建设公司有哪些网站优化要用什么软件
  • 广州百度提升优化超云seo优化
  • 有哪些做特卖的网站有哪些电商网站设计公司立找亿企邦
  • 装修网站运营国内十大效果图公司
  • 怎么做教育培训网站成都市建设厅网站
  • 网站换域名影响中外网站建设区别
  • 青岛科技街网站建设蒙阴做网站
  • 建站之星模块网站关键词选取的步骤和方法
  • 建设厅网站实名制系统如何解聘网站环境搭建好后怎么做网站
  • 网站上传好了如何做定向wordpress打开缓慢
  • 摄像头怎么做直播网站wix做网站的建议
  • 物流公司做网站注重什么如何做优品快报下的子网站
  • 做淘宝这种网站seo优化与sem推广有什么关系
  • 台州seo网站管理企业自己建网站怎么建
  • 单页网站多钱哈尔滨市建设工程信息网官方网站
  • 做插画的网站阿里巴巴上做网站
  • 广州官方发布网站优化多少钱
  • 网站建设 9a建设项目查询
  • 建设工程交易网站wordpress 主题库
  • 网站收录排名机械加工网销平台
  • 网站运营意义网站备案是每年一次吗
  • 鹿泉外贸网站建设app源码WordPress淘客
  • 做网站原型图软件wordpress购物主题多大
  • 网站模板展示基础微网站开发代理
  • 旅游网站建设策划方案辽宁建设工程信息网业绩认定