C++刷题八股文
文章平均质量分 92
C++刷题模板
我只是一只自动小青蛙
这个作者很懒,什么都没留下…
展开
-
动态规划:字符串系列
当遇见两个字符串s,t的动态规划问题时候,通常使用二维数组表示分别取两个字符串中的第i个元素和第j个元素,并根据s[i] == t[j]来选择不同的递推公式一、动态规划:子序列1、最长递增子序列(非连续)最长递增子序列给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组[0,3,1,6,2,2,7] 的子序列。1)dp数组dp[i]为以元素nums[i]结尾的最原创 2021-08-26 21:51:46 · 1416 阅读 · 0 评论 -
动态规划:打家劫舍&买卖股票
一、打家劫舍1、基础打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组nums,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。1)dp数组含义dp[i]:考虑下标i(包括i)以内的房屋,最多可以偷窃的金额为dp[i]2)递推公式对于第i间房屋,可以分为两种情况:不偷第i间房屋:dp[i原创 2021-08-26 22:18:54 · 118 阅读 · 0 评论 -
动态规划:基础与路径问题
一、动态规划与贪心的区别动态规划(Dynamic Programming),使用解决具有很多重叠子问题的问题。动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的二、动态规划解题步骤确定dp数组(dp table)以及下标的含义确定递推公式(有时候是递推公式决定了dp数组如何初始化)dp数组如何初始化确定遍历顺序举例推导dp数组注意:对于递推数组初始化部分,我们要直接返回,以防止初始化部分越界。如一个dp数组要从[0]初始化到[m原创 2021-08-26 22:20:01 · 280 阅读 · 0 评论