• 背包问题


    0-1 背包

    求 target

    416. 分割等和子集(0-1背包)

    本题要求把数组分成两个等和的子集,相当于找到一个子集,其和为 sum / 2,这个 sum / 2 就是 target(target 间接给出)。
    于是转化为是否可以用 nums 中的数组合和成 target

    1049. 最后一块石头的重量 II

    有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。

    每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:

    • 如果 x == y,那么两块石头都会被完全粉碎;
    • 如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x

    最后,最多只会剩下一块 石头。返回此石头 最小的可能重量 。如果没有石头剩下,就返回 0

    示例 1:

    输入:stones = [2,7,4,1,8,1]
    输出:1
    解释:
    组合 2 和 4,得到 2,所以数组转化为 [2,7,1,8,1],
    组合 7 和 8,得到 1,所以数组转化为 [2,1,1,1],
    组合 2 和 1,得到 1,所以数组转化为 [1,1,1],
    组合 1 和 1,得到 0,所以数组转化为 [1],这就是最优值。

    从 stonesstones 数组中选择,凑成总和不超过 num/2 的最大价值。

    494. 目标和(01背包)

    给你一个整数数组 nums 和一个整数 target 。

    向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 :

    例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得到表达式 "+2-1" 。
    返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。

    示例 1:

    输入:nums = [1,1,1,1,1], target = 3
    输出:5
    解释:一共有 5 种方法让最终目标和为 3 。
    -1 + 1 + 1 + 1 + 1 = 3
    +1 - 1 + 1 + 1 + 1 = 3
    +1 + 1 - 1 + 1 + 1 = 3
    +1 + 1 + 1 - 1 + 1 = 3
    +1 + 1 + 1 + 1 - 1 = 3

    我们想要的 S = 正数和 - 负数和 = x - y
    而已知 x 与 y 的和是数组总和:x + y = sum
    可以求出 x = (S + sum) / 2 = target
    也就是我们要从 nums 数组里选出几个数,令其和为 target(target 间接给出)。
    于是转化为是否可以用 nums 中的数组合和成 target

    三维

     474. 一和零 

    879. 盈利计划


    完全背包

    无序组合数:

    518. 零钱兑换 II (dp)

     

    给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。

    请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。

    假设每一种面额的硬币有无限个。 

    题目数据保证结果符合 32 位带符号整数。

    示例 1:

    输入:amount = 5, coins = [1, 2, 5]
    输出:4
    解释:有四种方式可以凑成总金额:
    5=5
    5=2+2+1
    5=2+1+1+1
    5=1+1+1+1+1

    有序组合数:

    70. Climbing Stairs(动态规划 爬台阶,一次只能爬1,2两节,组合) 

    377. 组合总和 Ⅳ(dp)

    给你一个由 不同 整数组成的数组 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)
    请注意,顺序不同的序列被视作不同的组合。

    求最短组合

    322. Coin Change(零钱兑换)

    279. 完全平方数(dp完全背包)

    139. 单词拆分

    背包问题(目录)
    01背包 : 背包问题 第一讲

     

    【练习】01背包 : 背包问题 第二讲(416. 分割等和子集)

     

    【学习&练习】01背包 : 背包问题 第三讲(416. 分割等和子集)

     

    完全背包 : 背包问题 第四讲

     

    【练习】完全背包 : 背包问题 第五讲(279. 完全平方数)

     

    【练习】完全背包 : 背包问题 第六讲(322. 零钱兑换)

     

    【练习】完全背包 : 背包问题 第七讲(518. 零钱兑换 II)

     

    多重背包 : 背包问题 第八讲

     

    多重背包(优化篇)

     

    多重背包(优化篇): 背包问题 第九讲

     

    多重背包(优化篇): 背包问题 第十讲

     

    混合背包 : 背包问题 第十一讲

     

    【练习】混合背包
    分组背包

     

    【练习】分组背包
    多维背包

     

    【练习】多维背包 : 背包问题 第 * 讲(474. 一和零)
    【练习】多维背包 : 背包问题 第 * 讲(879. 盈利计划)
    树形背包

     

    【练习】树形背包
    背包求方案数

     

    【练习】背包求方案数 : 背包问题 第 * 讲(494. 目标和)
    【练习】背包求方案数 : 背包问题 第 * 讲(879. 盈利计划)
    背包求具体方案

     

    【练习】背包求具体方案 : 背包问题 第 * 讲(1049. 最后一块石头的重量 II)
    泛化背包

     

    【练习】泛化背包

     

    作者:AC_OIer
    链接:https://leetcode-cn.com/problems/coin-change-2/solution/gong-shui-san-xie-xiang-jie-wan-quan-bei-6hxv/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

     

  • 相关阅读:
    关于JQuery的autocomplete1.11.4版本插件的使用心得
    BUG:ie678 使用jQuery设置页面标题
    BUG:ie8不支持indexOf()
    【转】使用@import和link导入样式
    【转】css3 media媒体查询器用法总结
    【转】css hack
    【转】移动平台WEB前端开发技巧汇总
    json格式与javascript对象字面量和数组对象的区别
    窗口和元素的大小:offset client scroll
    sharepoint2013 新建母板页 新建页面布局 关联母板页和页面布局
  • 原文地址:https://www.cnblogs.com/zle1992/p/15506725.html
Copyright © 2020-2023  润新知