背包问题总结

本文介绍了背包问题的基本概念,包括01背包、完全背包和多重背包等类型,并列举了力扣上相关的变种题目。强调动态规划是解决背包问题的高效方法,同时指出回溯法在某些情况下也可应用。此外,还推荐了一些力扣题目供读者实践。
摘要由CSDN通过智能技术生成

1、什么是背包问题

 有n件物品,1个最多可以装下重量为w的背包。每件物品有两个属性,一个是重量,第i件物品的重量为weights[i];一个是价值,第i件物品的价值为values[i]。

2、背包问题的分类

  如果每件物品只有1个,则为01背包;

  如果每件物品有无数个,则为完全背包;

  如果每件物品的数量不相同,则为多重背包;

  如果对背包进行了分组,每组只能选一个,则为分组背包。

  其中01背包和完全背包最为常见。背包问题的经典资料非[背包九江]莫属。但这份资料对于刚入门的小白来说还是有难度的。

3、力扣题目推荐

 力扣上没有最原始的背包问题,都是背包问题的变种,不认真分析,还真看不出是背包问题。

 原始01背包问题:https://www.lintcode.com/problem/125/

 原始完全背包问题:https://www.lintcode.com/problem/440/

 力扣01背包问题:
 分割等和子集,最后一块石头的重量II,目标和,一和零

 力扣完全背包问题:

 零钱兑换II,组合总和IV,爬楼梯,零钱兑换,完全平方数,单词拆分

 以上题目听名称好像和背包问题毫不相关,但都可以使用背包的思想进行解题。

4、解法、

 背包问题可以使用回溯法或者动态规划进行解题。

  回溯法名字听着响亮,但改变不了其暴力解法的本质。他是通过枚举所有的可能性,从中找到我们想要的解法。回溯法一般都要进行剪枝操作或者加缓存,才能达到时间要求。

  动态规划是比较高效的解法,但是需要找出递推公式。递推公式因题而异,的确很难掌握。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值