自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 重建二叉树(思路+python代码)

了解,前,中,后序遍历后,我们可以知道题中的前序遍历第一个元素便是根节点,而在中序遍历中找到根节点的位置,这个位置前面的全部是根节点的左子树,后面的全是根节点的右子树,我们可以很清晰的了解到左子树有多少个元素,右子树有多少个元素。输入一棵二叉树前序遍历和中序遍历的结果,请重建该二叉树。前序遍历:先遍历根节点,然后是左孩子,最后是右孩子。中序遍历:先遍历左孩子,然后是根节点,最后是右孩子。前序遍历:4,3,7,8,5。中序遍历:7,3,8,4,5。后序遍历:7,8,3,5,4。

2024-06-02 12:48:58 392

原创 背包问题求方案数(思路+python代码)

通过上面的逐行分析,我们可以发现,可用01背包的方法列出背包方案数的列表,所以我们可以列出下面的方程组:s[i][j](i从1到n+1):方案数的dp列表。

2024-05-29 21:23:54 2007

原创 AcWing-分组背包问题(思路+python代码)

多重背包问题中,因为它分组的缘故,我们需要考虑是否放入第i个组,以及假如放入第i个组,那放入第i个组中哪一个物品的价值大,也就是说,对于分组背包问题,我们需要判断,是放入第i个组中第k个物品的价值大,还是不放入第i个组的价值大。对于该题,跟01背包问题有着很大的相似程度,但与01背包问题不同的是,它又进行了进一步的分组,也就是说相当于由原来的二维列表变成了三维列表,本题需要用到01背包的知识,对01背包不清晰的小伙伴可以点击。每件物品的体积是 vij,价值是 wij,其中 i是组号,j是组内编号。

2024-05-27 17:30:52 657

原创 AcWing-二维费用的背包问题(思路+python代码)

观察题目我们可以发现,二维费用的背包问题和01背包问题非常的相似,无非是二维费用的背包问题多了一个不能超出背包重量的条件,因此,我们可以通过01背包的解法进行类比推理,在01背包中我们需要考虑放不放入第i件,同样在二维费用的背包问题中我们也需要考虑放不放入第i件,01背包中的判定条件只有判断第i件的物品的体积和j表示的体积的关系,而因为二维费用背包中多加了一个重量的条件,因此,我们也需要判断第i件物品的重量与k所表示的重量的关系。有 N件物品和一个容量是 V的背包,背包能承受的最大重量是M。

2024-05-25 11:17:18 566

原创 AcWing-混合背包问题(思路+python代码)

完全背包转换为多重背包,因为完全背包中的物品可以使用无数次,也就相当于有无数件物品,但我们知道,背包它是有总体积的,虽然物品可以一直使用,但它由于背包总体积的限制,导致它的范围上限变成了:v/物品体积,这样完全背包就转换成了多重背包问题。01背包转换为多重背包,毋庸置疑只需要在tempv,tempw(存放优化后的体积和价值的列表)两个列表中分别加上对应的物品,因为01背包中的物品只有一件,也就是只能使用一次,所以直接加入就行。第一行两个整数,N,V𝑁,𝑉,用空格隔开,分别表示物品种数和背包容积。

2024-05-24 17:20:12 706 1

原创 AcWing-多重背包问题(思路+python代码)

我们将总件数转化为1件,这便变成了01背包问题,像,题目中输入的第一个物品,它有3件,那我们便将其转化为3个第一个物品,但倘若一个物品它有1000件,那就意味这我们需要变成1000个这个物品,这将会造成时间上和空间上的浪费,对此我们可以使用二进制优化的方法,来缩减浪费。在扩展完形成新的列表之后,求最大价值的方法与01背包使用dp滚动数组求最大价值的方法一致,若对01背包使用dp滚动数组求最大价值的方法不了解,可跳转到。与完全背包相比,多重背包给出的物品件数是个给定范围,而完全背包中的物品可以无限使用。

2024-05-23 18:35:43 1912 1

原创 AcWing-完全背包问题(思路+python代码)

二维数组:当j>=bag[i-1][0],判断MAX(dp[i-1][j],dp[i-1][j-bag[i-1][0]]+bag[i-1][1])否则dp[i][j]=dp[i-1][j]一维数组:当j>=bag[i-1][0],判断MAX(dp[j],dp[j-bag[i-1][0]]+bag[i-1][1])否则dp[j]=dp[j]

2024-05-21 19:16:35 1259 1

原创 AcWing-01背包问题(思路+python代码)

二维数组:当j>=bag[i-1][0],判断MAX(dp[i-1][j],dp[i-1][j-bag[i-1][0]]+bag[i-1][1])否则dp[i][j]=dp[i-1][j]一维数组:当j>=bag[i-1][0],判断MAX(dp[j],dp[j-bag[i-1][0]]+bag[i-1][1])否则dp[j]=dp[j]

2024-05-20 20:26:40 2366 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除