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

自己做的网站外国人能访问吗seo综合查询什么意思

自己做的网站外国人能访问吗,seo综合查询什么意思,做测试游戏的网站,网站建设实训心得3000字背包问题其实有很多种,01背包是最基础也是最经典的,软工计科学生一定要掌握的。 01背包问题 代码随想录 视频讲解:带你学透0-1背包问题!| 关于背包问题,你不清楚的地方,这里都讲了!| 动态规划经…

背包问题其实有很多种,01背包是最基础也是最经典的,软工计科学生一定要掌握的。


01背包问题

代码随想录

视频讲解:带你学透0-1背包问题!| 关于背包问题,你不清楚的地方,这里都讲了!| 动态规划经典问题 | 数据结构与算法_哔哩哔哩_bilibili

思路

        直接上动态规划五部曲

1、dp数组及其下标的含义

对于背包问题,有一种写法, 是使用二维数组,即dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少

2.确定递推公式

再回顾一下dp[i][j]的含义:从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。

那么可以有两个方向推出来dp[i][j],

  • 不放物品i:由dp[i - 1][j]推出,即背包容量为j,里面不放物品i的最大价值,此时dp[i][j]就是dp[i - 1][j]。(其实就是当物品i的重量大于背包j的重量时,物品i无法放进背包中,所以背包内的价值依然和前面相同。)
  • 放物品i:由dp[i - 1][j - weight[i]]推出,dp[i - 1][j - weight[i]] 为背包容量为j - weight[i]的时候不放物品i的最大价值,那么dp[i - 1][j - weight[i]] + value[i] (物品i的价值),就是背包放物品i得到的最大价值

所以递归公式: dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);

3.初始化

首先从dp[i][j]的定义出发,如果背包容量j为0的话,即dp[i][0],无论是选取哪些物品,背包价值总和一定为0。

再看其他情况。

状态转移方程 dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]); 可以看出i 是由 i-1 推导出来,那么i为0的时候就一定要初始化。

dp[0][j],即:i为0,存放编号0的物品的时候,各个容量的背包所能存放的最大价值。

那么很明显当 j < weight[0]的时候,dp[0][j] 应该是 0,因为背包容量比编号0的物品重量还小。

当j >= weight[0]时,dp[0][j] 应该是value[0],因为背包容量放足够放编号0物品。

4.确定遍历顺序

在如下图中,可以看出,有两个遍历的维度:物品与背包重量

动态规划-背包问题3

那么问题来了,先遍历 物品还是先遍历背包重量呢?

其实都可以!! 但是先遍历物品更好理解

5.举例验证,直接看链接里的吧。

代码
def test_2_wei_bag_problem1():weight = [1, 3, 4]value = [15, 20, 30]bagweight = 4# 二维数组dp = [[0] * (bagweight + 1) for _ in range(len(weight))]# 初始化for j in range(weight[0], bagweight + 1):dp[0][j] = value[0]# weight数组的大小就是物品个数for i in range(1, len(weight)):  # 遍历物品for j in range(bagweight + 1):  # 遍历背包容量if j < weight[i]:dp[i][j] = dp[i - 1][j]else:dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i])print(dp[len(weight) - 1][bagweight])test_2_wei_bag_problem1()

01背包滚动数组

代码随想录

视频讲解:带你学透01背包问题(滚动数组篇) | 从此对背包问题不再迷茫!_哔哩哔哩_bilibili

 看链接吧,老是复制粘贴累了。


416.分割等和子集

本题是 01背包的应用类题目

代码随想录

视频讲解:动态规划之背包问题,这个包能装满吗?| LeetCode:416.分割等和子集_哔哩哔哩_bilibili

思路

        就是01背包的应用,背包的大小是总和的一半,遍历每一个物品,看看遍历到最后能不能装满这个背包。

代码(二维版本在链接里)
class Solution:def canPartition(self, nums: List[int]) -> bool:if sum(nums) % 2 != 0:return Falsetarget = sum(nums) // 2dp = [0] * (target + 1)for num in nums:for j in range(target, num-1, -1):dp[j] = max(dp[j], dp[j-num] + num)return dp[-1] == target
http://www.dt0577.cn/news/37186.html

相关文章:

  • 为什么要建设公安公众服务网站百度网站收录
  • 重庆网站平台建设月嫂免费政府培训中心
  • 做网站自适应框架百度竞价排名模式
  • 做网站代理怎么样关键词搜索引擎
  • 娄底手机网站制作护肤品营销策划方案
  • 新闻最新消息今天360优化大师官方网站
  • 微信网站 教程吉林关键词排名优化软件
  • 如何做每日外汇分析网站关键词在线播放免费
  • wordpress 动态网站模板对网络推广的理解
  • 电子商务网站建设目的邯郸seo优化公司
  • 买网站的域名指数是什么意思
  • 专业网站设计软件工具可以全部免费观看的软件
  • 网站目录优化可以访问违规网站的浏览器
  • 石景山网站开发网站优化推广seo公司
  • 介绍一学一做视频网站吗百度网盘app官方下载
  • 重庆网站建站模板公司武汉seo主管
  • 织梦网站做自适应百度关键词点击价格查询
  • 衡水有做网站的吗游戏广告联盟平台
  • 辽宁建设厅查询网站十大推广app平台
  • 政府网站建设管理计划百度快照官网登录
  • 廊坊百度推广网站设计百度联盟
  • 如何建双注册网站网络营销推广方案策划与实施
  • 大型网站后台是java吗快速收录域名
  • 在线阅读网站开发教程全国最新疫情最新消息
  • 哪个网站做贺卡做的好广告联盟平台入口
  • 好的做问卷调查的网站windows11优化大师
  • 凡客网址百色seo快速排名
  • 昆明网站建设wlyyb百度搜索风云榜小说排行榜
  • 公司网站建设设计成人营销管理培训班
  • 免费招聘网站有哪些上海aso苹果关键词优化