自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 最优次序问题的 贪心选择性质 和 最优子结构性质

• 新解 A' 仍是有效的,因为 a' 的结束时间早于 a1,并且后续的活动不受影响。• 构造一种新的解,将最优解的前缀替换为贪心选择,证明新解仍然是最优解。• 假设全局最优解已知,证明全局最优解中包含的部分子解是子问题的最优解。• 如果 A' 不是子问题的最优解,则全局最优解也不是最优解(矛盾)。• 原问题的最优解由子问题的最优解递归构成,因此具有最优子结构性质。:因此,原问题的最优解可以通过子问题的最优解递归地构造。,如果问题的全局最优解可以由其子问题的最优解组合而成。

2025-01-06 00:04:08 486

原创 切杆问题和01背包问题的比较(动态规划)(C++)

max(dp[i-1][w], dp[i-1][w-w[i]] + v[i]) & \text{如果选第 } i \text{ 个物品且 } w[i] \leq w。最大价值:7(选择物品 1 和物品 2,重量为 2+3=5,价值为 3+4=7)dp[i][w]:前 i 个物品在容量为 w 的背包中可以获得的最大价值。• dp[i][0] = 0(背包容量为 0 时,最大价值为 0)。• dp[0][w] = 0(没有物品时,最大价值为 0)。dp[0] = 0(长度为 0 的原木收益为 0)。

2025-01-05 16:19:38 1004

原创 编辑距离 (Edit Distance) 和 最长公共子序列 (Longest Common Subsequence, LCS) 的区别(C++)

• 定义:dp[i][j] 表示字符串 text1 的前 i 个字符与 text2 的前 j 个字符的最长公共子序列的长度。• 定义:dp[i][j] 表示将字符串 word1 的前 i 个字符转换为 word2 的前 j 个字符的最小操作数。最长公共子序列 两个字符串 text1, text2 整数值,表示最长公共子序列的长度。• 一个整数,表示从 word1 转换为 word2 所需的最小操作次数。• 如果字符相同,直接继承 dp[i-1][j-1];• 如果 word1[i-1]!

2024-12-30 22:37:01 595

原创 矩阵链乘问题(备忘录法)(C++)

• matrixChainOrder 会初始化备忘录并调用递归函数,计算整个矩阵链的最小代价。• 如果 dp[i][j] 已经计算过(不为 -1),直接返回存储的值,避免重复计算。• 在后续的分割中,将不断尝试更优的计算代价并更新 dp[i][j]。• dp[i][j] 表示从第 个矩阵到第 个矩阵的最小计算代价。• 递归函数从第 1 个矩阵到第 个矩阵(即整个矩阵链)进行求解。• 当前子问题的最优解存储在 dp[i][j] 中,直接返回。• 单个矩阵的计算代价为 0,因为它不需要和其他矩阵相乘。

2024-12-30 21:48:44 260

原创 矩阵链乘问题(动态规划)(C++)

如果有 个矩阵,p 的大小为 ,其中 p[i-1] * p[i] 表示第 个矩阵的维度。• len = 3 表示计算三个连续矩阵的乘法代价,依此类推,直到整条链长度为。4. 最终在 dp[1][n] 中存储从第 1 个矩阵到第 个矩阵的最小乘法代价。• 经过动态规划,dp[1][n] 已经存储了整个矩阵链的最小计算代价。• dp[i][j] 存储从第 个矩阵到第 个矩阵的最小乘法代价。:,表示从第 个矩阵到第 个矩阵的最小代价。:,表示从第 个矩阵到第 个矩阵的最小代价。• n 是矩阵的数量(即 )。

2024-12-30 21:22:56 325

原创 图的m着色问题(回溯法)(C++)

• 我们检查顶点 vertex 的所有邻接顶点(在 adj[vertex] 中),如果某个邻接顶点已经着了相同的颜色,则当前选择的颜色 color 就不合法,返回 false。需要注意的是,输入的顶点编号是从 1 开始的,但是数组的索引从 0 开始,因此我们将顶点编号减 1。:对于每个顶点,尝试所有 1 到 的颜色。• 每个顶点有 种可能的颜色选择,因此在最坏情况下,回溯算法的时间复杂度是 ,其中 是顶点数, 是颜色数。:递归调用结束后,恢复当前顶点的颜色为 0,即撤销颜色的选择,以尝试其他可能的选择。

2024-12-23 15:02:36 989

原创 最大团问题(回溯法)(C++)

只有当 isValid 返回 true,即当前顶点 x 可以加入到现有的团时,才会将 x 加入到 result 中,更新 current_size,然后继续递归,最后通过回溯将 x 从 result 中移除。• 每个测试用例首先给出一个整数 n,表示图的顶点数,接着给出一个 n x n 的邻接矩阵,表示图的边信息。你需要找到图中的最大团的大小,并输出。• 如果当前顶点 x 与已经选中的顶点集 result 中的任意顶点没有边相连,isValid 函数返回 false,表示当前顶点无法加入到现有团中。

2024-12-23 00:09:06 515

原创 小孩吃糖(C)

小孩分糖

2022-11-22 16:12:11 186

原创 今年过去多少天(7行)(C)

高三偶然发现的公式想用c语言写出来。

2022-11-13 19:04:14 320 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除