
动态规划
文章平均质量分 69
特点:求一个问题的最优解;整体问题的最优解是依赖于各个问题的最优解。
liujjjiyun
这个作者很懒,什么都没留下…
展开
-
动态规划-三角数组求和
【代码】动态规划-三角数组求和。原创 2025-03-15 16:44:24 · 385 阅读 · 0 评论 -
最大正方形
在一个由'0'和'1'组成的二维矩阵内,找到只包含'1'的最大正方形,并返回其面积。原创 2025-03-10 20:01:05 · 418 阅读 · 0 评论 -
买卖股票的最佳时机 II
随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。在这种情况下, 交易无法获得正利润,所以不参与交易可以获得最大利润,最大利润为 0。原创 2025-03-02 18:22:21 · 1042 阅读 · 0 评论 -
动态规划-0-1背包问题
有一组物品,其重量为w1,w2,…,wn,其价值为 v1,v2,…,vn,现在有一个背包,其容量是c,问怎么样装入物品,可以使背包的价值最大化?(要么装,要么不装,不能只装入物品的一部分)我们要找的是问题的状态和状态转移方程。原创 2025-02-22 17:49:20 · 584 阅读 · 0 评论 -
动态规划-最长非降子序列LIS
我们看上面这个序列。显然,5和3不能构成非降子序列。3和4就可以构成非降子序列。以此类推。最长的非降子序列是3479。:不一定得到最优解,无效的解法 但是要求算法时间复杂度:O(n^2)。原创 2025-02-22 17:42:24 · 298 阅读 · 0 评论 -
动态规划-最大子段和
【代码】动态规划-最大子段和。原创 2025-02-22 17:38:56 · 242 阅读 · 0 评论 -
动态规划-斐波那契数列
【代码】动态规划-斐波那契数列。原创 2025-02-19 16:12:42 · 393 阅读 · 0 评论 -
动态规划-硬币选择问题
【代码】动态规划-硬币选择问题。原创 2025-02-19 16:09:59 · 451 阅读 · 0 评论 -
小C选点
题目要求在给定的 n 个点中选出 m 个点,使得这些点之间的两两距离都不超过 k。首先,我们需要对点的坐标进行排序,以便于使用双指针算法来快速找到满足条件的点对。然后,我们利用组合数计算公式 C(n,m) 来计算在满足条件的点集中选出 m 个点的方案数。小C在坐标轴上有 n 个点,她想从中选出 m 个点,使得这些点之间的两两距离都不超过 k。你的任务是帮助小C计算出有多少种选点的方案。,并且 k=3,你可以任选两个点,它们的距离都不会超过 k,因此总共有6种选点方案。例如:给定点的坐标为。原创 2025-02-06 13:02:56 · 334 阅读 · 0 评论 -
0-1背包问题
当物品是0个,不管背包的容量多大,价值为0,当背包的容量为0,不管多少个物品,都是0。从第5个物品开始看,15和14不相等,所以第5个物品我们放!当我们放这5个物品,当我们的背包容量=10的时候,我们的最大价值=15。到底哪些物品我们存放了,哪些物品我们没有存放?原创 2025-02-06 12:45:41 · 549 阅读 · 0 评论 -
最长公共子序列
对角线,为1行-1 为2列-1位3。原创 2025-02-06 12:28:22 · 471 阅读 · 0 评论 -
动态规划
空间换区时间,保存子问题的解。原创 2025-02-06 12:14:33 · 255 阅读 · 0 评论 -
有限制的楼梯攀登
我们可以通过动态规划来解决这个问题。定义一个二维数组 f,其中 f[i][0] 表示到达第 i 层且最后一步是走一步的走法数,f[i][1] 表示到达第 i 层且最后一步是走两步的走法数。根据题意,f[i][0] 可以由 f[i−1][0] 和 f[i−1][1] 转移而来,而 f[i][1] 只能由 f[i−2][0] 转移而来(因为不能连续走两步)。最终答案是 f[n][0]+f[n][1]。小U最近决定挑战一座非常高的楼梯,每次他可以选择走一步或两步,但有一个重要的限制:他不能连续走两步。原创 2025-02-04 13:30:15 · 276 阅读 · 0 评论 -
小R的雪球滚落计算
滚到地面时,体积会膨胀 xi 倍。因此,总体积可以表示为 ∑i=0H−1ai⋅xi。我们需要在计算过程中对结果取模 10^9+7,以避免数值溢出。题目要求计算所有雪球滚落到地面的总体积,并对结果取模 10^9+7。你的任务是帮助计算所有雪球滚落到地面的总体积。我们需要计算所有滚落到地面的雪球的总体积,并对结果取模。也就是说,雪球的初始体积为。滚到地面时,它的体积会膨胀。原创 2025-02-04 13:18:47 · 877 阅读 · 0 评论 -
小E的比赛得分计算
小E正在参加一系列比赛,共有nn场比赛。赢得一场比赛可以获得1分,而如果连续赢得两场或更多比赛,第二场及之后的每一场比赛都会额外获得1分。现在,给定nn场比赛的结果,请计算小E的总分数。样例1:样例2:样例3:样例4: 小E参加了一系列比赛,每场比赛的结果用一个数组 表示,其中 表示赢, 表示输。赢得一场比赛可以获得1分,但如果连续赢得两场或更多比赛,第二场及之后的每一场比赛都会额外获得1分。 我们可以直接使用数组 来遍历比赛结果。初始化变量:遍历比赛结果:计算分数:处理最原创 2025-02-02 15:36:11 · 802 阅读 · 0 评论 -
兔群繁衍之谜
C++实现。原创 2025-01-20 15:08:50 · 597 阅读 · 0 评论 -
礼物价值
我们可以使用一个二维数组。原创 2025-01-18 17:05:32 · 691 阅读 · 0 评论 -
最优硬币组合问题
小C有多种不同面值的硬币,每种硬币的数量是无限的。他希望知道,如何使用最少数量的硬币,凑出给定的总金额N。小C对硬币的组合方式很感兴趣,但他更希望在满足总金额的同时,使用的硬币数量尽可能少。题目要求使用最少数量的硬币凑出给定的总金额。这是一个典型的动态规划问题,可以通过构建一个动态规划数组。记录每个金额对应的最后一个硬币面值,以便在最后回溯出具体的硬币组合。来记录凑出每个金额所需的最少硬币数量。例如:小C有三种硬币,面值分别为。一种最优的方案是使用三个。面值的硬币,总共五个硬币。**初始化动态规划数组。原创 2025-01-16 13:12:07 · 365 阅读 · 0 评论 -
小M的最小操作代价函数
Python实现。原创 2025-01-08 12:25:59 · 581 阅读 · 0 评论 -
小E的倍数关系子集问题
核心信息是:我们需要找到所有满足倍数关系的子集。为了实现这一点,我们可以利用动态规划的思想,从大到小遍历每个元素,计算以该元素为最小值的子集数量。通过这种方式,我们可以逐步构建出所有满足条件的子集。题目要求在一个给定集合中,找出满足以下条件的子集数量:子集内的所有元素数量大于1,且子集内的所有元素两两之间互为倍数关系。由于结果可能非常大,输出的结果需要对 109+7 取模。由于结果可能非常大,输出的结果需要对 10^9+7 取模。原创 2024-12-27 10:37:45 · 898 阅读 · 0 评论 -
小U的好字符串
小U定义了一个“好字符串”,它的要求是该字符串中不包含任意长度不小于2的回文子串。现在小U拿到了一个字符串,她想知道有多少个非空的子序列是“好字符串”。你的任务是帮助她计算出这些子序列的数量。例如,对于字符串 ,它的子序列中除了 和 以外,其余五个子序列都是“好字符串”。注意:由于答案可能非常大,你需要对结果取 10^9+7进行输出。样例1:样例2:样例3:定义状态:状态转移:计算结果:初始化:状态转移:计算结果:Python解题思路说明题目要求计算一个字符串中所有不包含任意长度不小于2的原创 2024-12-25 12:14:21 · 820 阅读 · 0 评论 -
小U的问号替换问题
通过动态规划,我们可以有效地计算出所有可能的替换方案,并判断哪些方案满足条件。这个方法的时间复杂度是,其中n是字符串的长度,p是给定的正整数,10 是?可以替换的数字个数。原创 2024-12-23 11:39:08 · 1031 阅读 · 0 评论 -
小U的加法魔法
小U有一个长度为 nn 的数组,她需要计算这个数组的总和 sum=a1+a2+...+ansum=a1+a2+...+an。小U可以使用一次魔法,将其中一个加号变成乘号,以使得最终的总和最大。你需要帮小U找到这个最优的方案,计算出最大的可能总和。原创 2024-12-22 17:39:30 · 385 阅读 · 0 评论 -
最长不含重复字符的子字符串 剑指offer
请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。假设字符串中只包含'a'~'z'的字符。例如,在字符串"arabcacfr"中,最长的不含重复字符的子字符串是"acfr",长度为4。原创 2024-12-19 19:11:59 · 968 阅读 · 0 评论 -
礼物的最大价值 剑指offer
在一个m*n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向左或者向下移动一格,直到到达棋盘的右下角。给定一个棋盘及其上面的礼物,请计算你最多能拿到多少价值的礼物?原创 2024-12-19 18:55:01 · 520 阅读 · 0 评论 -
字符串趋同最小代价问题
通过上述步骤,你可以逐步实现一个算法来计算将两个二进制字符串修改为相同字符串的最小总成本。原创 2024-12-19 17:50:15 · 631 阅读 · 0 评论 -
连续子数组的最大和 剑指offer
输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n)。原创 2024-12-18 21:05:21 · 192 阅读 · 0 评论 -
小M的弹子游戏机挑战
通过动态规划,我们可以从底部向上计算每个位置的最大分数,最终得到从最上方任意位置开始的最大分数。原创 2024-12-18 19:25:58 · 873 阅读 · 0 评论 -
字符串的排列 剑指offer
输入一个字符串,打印出该字符串中字符的所有排列。例如,输入字符串abc,则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab 和cba。原创 2024-12-16 20:58:20 · 394 阅读 · 0 评论 -
顺时针打印矩阵 剑指offer
输入一个矩阵,按照从外往里以顺时针的顺序依次打印出每一个数字。例如,如果输入以下矩阵:可以用一个循环来打印矩阵,每次打印矩阵中的一个圈。原创 2024-12-14 20:06:31 · 176 阅读 · 0 评论 -
小X的区间或值和
题目要求计算数组中所有可能的连续子数组的权值和,即任选两个数的按位或值之和。具体来说,我们可以逐位考虑每个数的二进制表示,统计每一位上为1的数对按位或值的贡献。小X有一个数组,她定义数组的权值为数组中任选两个数的按位或的值之和。具体来说,对于数组中的每个连续子数组,我们可以计算所有可能的两个元素的按位或值之和,并将这些值相加。由于我们需要处理数组中的所有连续子数组,并且计算每个子数组中所有可能的两个元素的按位或值之和,因此我们需要一种高效的方式来遍历和计算这些值。原创 2024-12-08 11:09:32 · 575 阅读 · 0 评论 -
剪绳子 剑指offer
给你一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1,并且m>1),每段绳子的长度记为k[0],k[1],...k[m]。请问k[0]*k[1]*...k[m]可能的最大乘积是多少?例如,当绳子的长度为8时,我们把它剪成长度分别为2,3,3的三段,此时得到的最大乘积是18。原创 2024-12-07 18:32:38 · 258 阅读 · 0 评论