【LeetCode-337】打家劫舍III(动态规划)
目录 题目描述 解法1:动态规划 代码实现 题目链接 题目描述 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。 计算在不触动警报的情况下,小偷一晚能...
【LeetCode-213】打家劫舍II(动态规划)
题目链接 目录 题目描述 解法1:动态规划 代码实现 题目链接 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。 给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,能够偷窃到...
备战蓝桥杯---动态规划(应用3之空间优化)
话不多说,直接看题: 我们不妨把问题抽象一下: 首先,我们由裴蜀定理知道如果两个数互质,那么ax+by=c一定有整数解(只要c为1的倍数也就是整数),因此问题就转换为求选一些数使他们gcd==1(对1特判) 考虑到与背包问题的类似性,于是我们令f[i][j]为前i个数gcd==j的最小花费。 于是我们得到转移方程:f[i][j]=min(f[i-1][j],f[i-1][k]+c[i])(k与li的gcd...
【动态规划】【矩阵快速幂】LeetCode2851. 字符串转换
∑ m : 0 n − 1 \Large \sum_{m:0}^{n-1} ∑m:0n−1pre(m) - pre[j4] dp[j3]-dp[j4] = pre[j3]-pre[j4] = 0。 动态规划的状态表示 只需要两种状态j为0,j不为0。 pre[0] = 1,pre[1]=0 动态规划的转移方程 dp[0] = pre[1](n-1) dp[1] = pre[0] +pre[1](n-2)...
【动态规划】【C++算法】2742. 给墙壁刷油漆
作者推荐 【数位dp】【动态规划】【状态压缩】【推荐】1012. 至少有 1 位重复的数字 本文涉及知识点 动态规划汇总 LeetCode2742. 给墙壁刷油漆 给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time ,分别表示给 n 堵不同的墙刷油漆需要的开销和时间。你有两名油漆匠: 一位需要 付费 的油漆匠,刷第 i 堵墙需要花费 time[i] 单位的时间,开销为 cost[i]...
【动态规划专栏】专题一:斐波那契数列模型--------4.解码方法
专题一 题目来源题目描述题目解析算法原理1.状态表示2.状态转移方程3.初始化4.填表顺序5.返回值 代码实现 题目来源 本题来源为: 题目描述 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : 要解码已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,“11106” 可以映射为: 注意,消息不能分组为 (1 11 06) ,因为 “06” 不能映射为 “F” ...
【动态规划】【字符串】2167移除所有载有违禁货物车厢所需的最少时间
作者推荐 【深度优先搜索】【树】【有向图】【推荐】685. 冗余连接 II 本文涉及知识点 动态规划汇总 LeetCode2167移除所有载有违禁货物车厢所需的最少时间 给你一个下标从 0 开始的二进制字符串 s ,表示一个列车车厢序列。s[i] = ‘0’ 表示第 i 节车厢 不 含违禁货物,而 s[i] = ‘1’ 表示第 i 节车厢含违禁货物。 作为列车长,你需要清理掉所有载有违禁货物的车厢。你可...
【动态规划】【C++算法】1563 石子游戏 V
作者推荐 【数位dp】【动态规划】【状态压缩】【推荐】1012. 至少有 1 位重复的数字 本文涉及知识点 动态规划汇总 LeetCoce:1563 石子游戏 V 几块石子 排成一行 ,每块石子都有一个关联值,关联值为整数,由数组 stoneValue 给出。 游戏中的每一轮:Alice 会将这行石子分成两个 非空行(即,左侧行和右侧行);Bob 负责计算每一行的值,即此行中所有石子的值的总和。Bob ...
【动态规划】【记忆化搜索】【状态压缩】1681. 最小不兼容性
作者推荐 【数位dp】【动态规划】【状态压缩】【推荐】1012. 至少有 1 位重复的数字 本文涉及知识点 动态规划汇总 状态压缩 记忆化搜索 1681. 最小不兼容性 给你一个整数数组 nums 和一个整数 k 。你需要将这个数组划分到 k 个相同大小的子集中,使得同一个子集里面没有两个相同的元素。 一个子集的 不兼容性 是该子集里面最大值和最小值的差。 请你返回将数组分成 k 个子集后,各子集...
【动态规划】【前缀和】【C++算法】LCP 57. 打地鼠
作者推荐 视频算法专题 本文涉及知识点 动态规划汇总 C++算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LCP 57. 打地鼠 勇者面前有一个大小为3*3 的打地鼠游戏机,地鼠将随机出现在各个位置,moles[i] = [t,x,y] 表示在第 t 秒会有地鼠出现在 (x,y) 位置上,并于第 t+1 秒该地鼠消失。 勇者有一把可敲打地鼠的锤子,初始时刻(即第 0 秒)锤子位于...