416、32、62

416

这道题是0-1背包的问题,题意可以转化为背包容量为sum/2,存放的最大价值也是sum/2。dp[i]表示容量为i的背包存放的最大价值是dp[i],如果dp[i]==sum/2,那就返回true,否则返回false。递推关系是dp[j]=max(dp[j-nums[i]+nums[i]],dp[j])。本题绕的地方在于容量为sum/2,最大价值也是sum/2,需要分辨清楚。

32

这道题用栈来解答,如果碰到左括号就把对应的下标入栈,如果碰到右括号就对应的下标出栈,计算长度就把当前遍历的下标减去栈顶元素。如果右括号多于左括号,栈中就会出现空栈,那就把对用的右括号下标入栈,记录不能匹配的下标,这样计算长度的时候栈顶就是不能匹配的最后一个元素了。

62

这道题是二维dp,dp[i][j]表示走到第i行第j列处有dp[i][j]种方法,递推关系是dp[i][j]=dp[i-1][j]+dp[i][j-1]。在遍历之前需要对第一行和第一列初始化,初始化值均为1。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 01背包问题---二维 问题:有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到...
    skak阅读 79评论 0 0
  • 4 算法初步 4.2 散列 线性探查法:冲突后检查下一位。 平方探查法:冲突后依次检查 。超出散列表长度,取余。 ...
    方木南阅读 977评论 0 6
  • 和分治法一样,动态规划(dynamic programming)是通过组合子问题而解决整个问题的解。 分治法是将问...
    Teci阅读 5,685评论 0 70
  • 动态规划(Dynamic Programming) 本文包括: 动态规划定义 状态转移方程 动态规划算法步骤 最长...
    廖少少阅读 3,365评论 0 18
  • LeetCode 刷题随手记 - 第一部分 前 256 题(非会员),仅算法题,的吐槽 https://leetc...
    蕾娜漢默阅读 17,984评论 2 36