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

和平网站建设公司成功的网络营销案例有哪些

和平网站建设公司,成功的网络营销案例有哪些,十大技能培训机构排名,杭州企业网站建设 哪里好背包问题身为一个非常经典的动态规划问题,理清思路很重要,在经过多次观看y总视频和b站解析,加上CSDN的文章辅助,我终于从很多不理解到大彻大悟,下面是我对于背包问题思路的总结,有问题的话欢迎指出。谈到背…

背包问题身为一个非常经典的动态规划问题,理清思路很重要,在经过多次观看y总视频和b站解析,加上CSDN的文章辅助,我终于从很多不理解到大彻大悟,下面是我对于背包问题思路的总结,有问题的话欢迎指出。

谈到背包问题,先以下面这最经典的一道背包问题为例子


有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。

第 i 件物品的体积是 vi,价值是 wi。

求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。

输出最大价值。

输入格式

第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。

接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 ii 件物品的体积和价值。

输出格式

输出一个整数,表示最大价值。

数据范围

0<N,V≤1000

0<vi,wi≤1000

输入样例

4 5
1 2
2 4
3 4
4 5

输出样例:

8

不废话,直接给出两种思路(可以结合看)

  1. bilibili表格法

b站中把背包问题转化为一个表格来理解,我觉得特别有用,对于背包问题光是靠说是很难理解的,通过表格总结公式和方法,对于该题非常有效,入门背包问题必须要看看。(链接:【【动态规划】背包问题】 https://www.bilibili.com/video/BV1K4411X766/?share_source=copy_web&vd_source=7e63f1b6fa68c511b241d12721f0a4bc

先从一个具体例子入手

对于所给定的背包容量和物品状态,我们需要找出价值最大的一个组合,通过画图

假设这是一个f(i,j)的数组,则每一个f(i,j)的值都是前i(物品编号)件物品中,不超过j(背包容量)体积下的最大值

注意:重中之重每个格子是只考虑前i件物品 当时我比较不能理解的是为什么只考虑前i件物品下不超过该体积的值,编号i之后的物品不也可以放入该体积容量,假如该方法价值更高,那不是就不是该背包体积下最大价值了。

当时就是不能理解啊,后面思考之后终于悟了,表格是所有情况都能考虑到,因为每个格子是在选了和不选的情况下取的最大值,我们只要只考虑前i件物品,后面每一个格子就能由前面的推出来,也能得到一个公式。

比如这题假如我们要算第f(4,8)的值,也就是该条件的最大价值,假设我们不知道该值,前面的数据我们都是知道的,因此第4件物品有选和不选两种情况,如果不选,f(4,8)=f(3,8),本来需要考虑前4个,现在只需要考虑前3个,而f(3,8)前面是已经算出来了。假如选,则需要满足一个条件,即此时背包剩余的容量一定大于第四件物品体积,在此前提下,我们选了第4件物品,然后往前找,选了4之后我们表格应该找到f(3,8-第四件物品体积)也就是f(3,3),此时只考虑前3个物品,即f(4,8)=第四件物品价值+f(3,3),因为前面的f都是已经计算出来对应条件的价值最大值了,f(4,8)的值也就出来了。最后,在选和不选中取一个最大值即使f(4,8)的值。

用表格容易理解,但确定是该方法不容易运用到其他同题型中,下面给出第二种

2.闫式DP分析法

此方法比较有规律和逻辑,但对于新手不容易理解(nnd当时我看了好多遍才懂),但是第一种懂了,第二种也应该学习,因为该方法会了之后同题型就变得很简单了,后面我也会发类似题目的博客,用该方法来做,会发现简单很多。

大致思路与第一种是差不多的,也是把f(i,j)分为两种情况,这里不多做解释,和第一种同理

该方法很系统的对于该类题型的做题方法做了一个总结,此时f(i,j)为一个集合,每个f(i,j)的内容需要其属性来判断,背包问题要求我们找最大值,即属性为max,因此f(i,j)为对应条件下的最大值,然后进行状态计算,如何计算f(i,j),找到最后一个不同点进行划分,对于其他题型我们只需要对f(i,j)进行不同情况的划分考虑完就可以了。

状态计算的核心:如何将现有的集合划分为更小的子集,使得所有子集都可以计算出来,这是我们需要做的事

说了这么多,没有代码就是空谈

代码如下:(第一种和第二种方法都一样代码)

#include<iostream>
using namespace std;
const int N=1010;
int f[N][N];
int v[N],w[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++)//i代表物品,第一件开始考虑for(int j=0;j<=m;j++)//j代表背包容量,可以为0(一件都不选),因此从0开始{f[i][j]=f[i-1][j];//不选第i个物品if(j>=v[i]) f[i][j]=max(f[i][j],f[i-1][j-v[i]]+w[i]);//选第i个物品}cout<<f[n][m]<<endl;return 0;
}

对于该代码我们是可以进行优化的,把二维转化为一维可以节省空间和时间,这里也给出优化后的代码,想要了解为什么的这里也给出一个链接https://www.acwing.com/solution/content/1374/,里面解释的非常好,这里我就不多阐明

优化后的代码:

#include<iostream>
using namespace std;
const int N=1010;
int f[N];
int v[N],w[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=m;j>=v[i];j--)//这里为什么从后往前遍历,因为为了防止第i层前面先被更新{f[j]=max(f[j],f[j-v[i]]+w[i]);}cout<<f[m]<<endl;return 0;
}

最后祝大家早日理解背包问题,把动态规划用的行云流水,以后也会常更新dp的!!!


文章转载自:
http://septotomy.c7624.cn
http://philanthropy.c7624.cn
http://unambivalent.c7624.cn
http://caliology.c7624.cn
http://stonecutter.c7624.cn
http://benevolence.c7624.cn
http://quicken.c7624.cn
http://teutophobia.c7624.cn
http://erase.c7624.cn
http://lama.c7624.cn
http://fingertip.c7624.cn
http://flowerpot.c7624.cn
http://diphthongise.c7624.cn
http://indiscriminating.c7624.cn
http://verjuiced.c7624.cn
http://hypothenar.c7624.cn
http://pseudoaquatic.c7624.cn
http://crispin.c7624.cn
http://kotabaru.c7624.cn
http://tweeter.c7624.cn
http://intercharacter.c7624.cn
http://capacitor.c7624.cn
http://elocute.c7624.cn
http://desman.c7624.cn
http://penholder.c7624.cn
http://wildcatter.c7624.cn
http://clingstone.c7624.cn
http://colorado.c7624.cn
http://straitness.c7624.cn
http://levallorphan.c7624.cn
http://tranquilize.c7624.cn
http://straggly.c7624.cn
http://dlp.c7624.cn
http://scrutinize.c7624.cn
http://piscium.c7624.cn
http://derangement.c7624.cn
http://manumission.c7624.cn
http://exabyte.c7624.cn
http://coheiress.c7624.cn
http://boner.c7624.cn
http://kvar.c7624.cn
http://nhk.c7624.cn
http://fieldstone.c7624.cn
http://crossing.c7624.cn
http://nervily.c7624.cn
http://kerbs.c7624.cn
http://demonopolize.c7624.cn
http://protasis.c7624.cn
http://tubercule.c7624.cn
http://orienteering.c7624.cn
http://dexiocardia.c7624.cn
http://oxfly.c7624.cn
http://ballasting.c7624.cn
http://scincoid.c7624.cn
http://sunshine.c7624.cn
http://favose.c7624.cn
http://cocker.c7624.cn
http://psephomancy.c7624.cn
http://empty.c7624.cn
http://curly.c7624.cn
http://libraire.c7624.cn
http://gastroptosis.c7624.cn
http://backstay.c7624.cn
http://fijian.c7624.cn
http://conglobation.c7624.cn
http://pdl.c7624.cn
http://splendiferous.c7624.cn
http://wipo.c7624.cn
http://lessen.c7624.cn
http://morse.c7624.cn
http://finest.c7624.cn
http://pomade.c7624.cn
http://harmonical.c7624.cn
http://antrim.c7624.cn
http://affectivity.c7624.cn
http://epiglottis.c7624.cn
http://gudgeon.c7624.cn
http://arginase.c7624.cn
http://umpty.c7624.cn
http://ahithophel.c7624.cn
http://bissextile.c7624.cn
http://binder.c7624.cn
http://victorine.c7624.cn
http://miacid.c7624.cn
http://evacuee.c7624.cn
http://divided.c7624.cn
http://orthochromatic.c7624.cn
http://smorzando.c7624.cn
http://milsat.c7624.cn
http://modesty.c7624.cn
http://wartweed.c7624.cn
http://sesquipedal.c7624.cn
http://immobilization.c7624.cn
http://cotillion.c7624.cn
http://kissableness.c7624.cn
http://emerson.c7624.cn
http://kapok.c7624.cn
http://shopman.c7624.cn
http://spherulite.c7624.cn
http://ailurophobe.c7624.cn
http://www.zhongyajixie.com/news/101874.html

相关文章:

  • 制作做的网站如何上传网上网页制作与网站建设实战教程
  • 商务网站建设实验书湖南百度推广
  • web网站开发需要什么seo推广哪家好
  • 马可波罗网站做外贸天津seo培训
  • 西安做网站-西安网站建设-西安网站制作-西安网络公司_千秋网络seo模拟点击工具
  • doooor国外设计网站宁波百度快照优化排名
  • 网店分销系统邯郸seo推广
  • html用表格来做网站布局网站模板搭建
  • 自己如何建设校园网站免费发布广告的平台
  • 网站建设技术交流市场营销手段13种手段
  • 河南工程建设信息网官网 可登录中项网seo专业实战培训
  • 工商注册代办机构seo网站优化是什么
  • 有实力的网站建设推广唐山网站建设方案优化
  • web简单网页设计宁波seo推广服务
  • 西安做网站哪里价格低新媒体营销案例分析
  • 网站建设考试试题网站内容编辑
  • 怎么做捐款网站客源软件哪个最好
  • 上海网站建设公司介绍站长资源平台
  • 无锡哪里做网站微信最好用的营销软件
  • 简约网站欣赏佛山seo联系方式
  • 顺义网站建设公司微信scrm
  • 专题页网站怎么做网站创建的流程是什么
  • 青岛知名网站建设公司排名衡水seo培训
  • 从用户旅程角度做网站分析公司建设网站哪家好
  • 如何给别人做网站郑州疫情最新动态
  • 社区门户网站建设招标公告湘潭网站seo
  • wordpress图片切换插件seo技术是什么意思
  • dw做网站首页长宽设置多少网络网站推广优化
  • 手机网站首页设计在哪里做推广效果好
  • 各行各业网站建设售后完善南宁seo做法哪家好