背包模型(求组合)?爬楼梯模型(求排列)?
普通背包模型和爬楼梯模型是非常相似的两个模型。首先我们定义一个**“抽象背包模型”**注意这个抽象背包模型不是前面提到的普通背包模型给定 n 个物品装满容积为 m 的背包求方案数/具体方案/等等。那么普通背包模型和爬楼梯模型实际上就是这个抽象背包模型的两种特殊形式普通背包模型求组合爬楼梯模型求排列我们可以看一个具体的例子377. 组合总和 Ⅳ给你一个由不同整数组成的数组nums和一个目标整数target。请你从nums中找出并返回总和为target的元素排列的个数。题目数据保证答案符合 32 位整数范围。示例 1输入nums [1,2,3], target 4 输出7 解释 所有可能的组合为 (1, 1, 1, 1) (1, 1, 2) (1, 2, 1) (1, 3) (2, 1, 1) (2, 2) (3, 1) 请注意顺序不同的序列被视作不同的组合。示例 2输入nums [9], target 3 输出0提示1 nums.length 2001 nums[i] 1000nums中的所有元素互不相同1 target 1000在这里题目让我们求的是排列数因此我们要使用爬楼梯模型。爬楼梯模型是先枚举背包容积再枚举所有物品普通背包模型是先枚举所有物品再枚举背包容积通过枚举顺序其实我们也可以发现普通背包模型第一维先枚举物品因此它的物品是“有序”的也就不会产生重复例如1,2和2,1同时出现的情况。而爬楼梯模型由于是在第二位才枚举物品因此它显然的会出现重复的情况。由于在这里题目让求的是排列数因此这里要用爬楼梯模型。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2470976.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!