- 博客(3)
- 收藏
- 关注
原创 地图着色问题——七城市协调发展
本文将结合7城市着色场景,拆解问题建模逻辑,详解贪心算法与回溯法的核心思想、执行流程,并从效率、适用场景等维度做全面对比,同时补充可视化思路,让算法落地更直观。核心思路:按城市编号顺序(0~6)依次处理,为每个城市分配“最小可用的合法颜色”——即从颜色1到4依次尝试,找到第一个不与相邻城市重复的颜色,分配后立即处理下一个城市,不回溯、不调整。回溯法是暴力搜索的优化版,通过“尝试-回退”的递归逻辑遍历所有可能的着色方案,既能找到第一个合法解,也能枚举所有解,核心是“剪枝”避免无效遍历。
2025-12-20 20:36:35
486
原创 动态规划算法
它将原问题拆解为若干个规模更小的子问题,先求解这些子问题并记录结果,当后续计算需要用到相同子问题的解时,直接复用已记录的结果,以此大幅降低时间复杂度。掌握动态规划的关键,在于理解问题的三大特征,熟练运用“确定状态—推导转移方程—初始化边界—确定遍历顺序”的四步解题法,并通过经典例题的练习,逐步培养对问题的分析和建模能力。推导状态转移方程:到达第 i 阶有两种途径,从第 i-1 阶爬 1 阶上来,或从第 i-2 阶爬 2 阶上来,因此 dp[i] = dp[i-1] + dp[i-2]。
2025-12-20 20:21:46
362
原创 分治法——从思想到实战
在算法设计中,分治法(Divide and Conquer)是一种经典的分而治之思想,它将复杂问题拆分为若干个规模更小、结构相同的子问题,解决子问题后再合并结果,最终得到原问题的答案。从基础的归并排序、二分查找,到进阶的Strassen算法,分治法的应用贯穿了算法学习的全过程,是每位程序员必须掌握的核心技能。1. 降低问题复杂度:将高复杂度问题拆分为低复杂度子问题,如归并排序将O(n^2)的排序问题优化为O(n\log n)。适用场景:问题可拆分、子问题独立、子问题解可合并,且拆分后能降低问题复杂度。
2025-12-17 21:36:31
322
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅