![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 82
排骨炖粉条
愿你在冷铁卷刃前,得以窥见天光。
展开
-
递归与树的深度优先搜索:探索它们之间的关系
递归是一种强大而优雅的编程技术,它允许我们通过将问题分解为更小的子问题来解决复杂的问题。另一方面,树的深度优先搜索(DFS)是一种遍历或搜索树形数据结构的常用算法。这两个概念看似不同,但实际上它们之间存在着紧密的联系。原创 2024-04-04 14:20:07 · 668 阅读 · 0 评论 -
汉诺塔问题的递归算法解析
汉诺塔问题是一个经典的递归算法问题,通过将问题分解为子问题,并使用递归的方式解决子问题,最终完成整个移动过程。递归算法的核心思想是将复杂问题分解为相似的子问题,通过解决子问题来解决原问题。明确递归函数的定义和参数含义。确定递归的基础情况,即递归的终止条件。将问题分解为子问题,并递归地解决子问题。将子问题的解合并或组合,得到原问题的解。递归算法虽然简洁易懂,但在某些情况下可能会导致递归调用的深度过大,从而引发栈溢出等问题。原创 2024-04-03 22:24:22 · 1229 阅读 · 0 评论 -
递归、搜索与回溯算法详解
递归、搜索和回溯算法是编程中非常重要的算法思想,它们既是基础知识,又有很强的实用性。深入理解这些算法的原理和应用,对我们提升编程能力,解决复杂问题都有很大帮助。递归是一种分治的思想,它将问题分解为子问题,通过解决子问题来解决原问题。递归虽然简洁,但需要注意控制递归深度,避免栈溢出,必要时可以通过记忆化搜索或动态规划来优化。搜索算法是一种暴力枚举的方法,通过搜索状态空间来找到问题的解。深度优先搜索适合快速发现一个解,而广度优先搜索适合寻找最优解。搜索算法通常需要与问题的特点相结合,设计合适的搜索策略。原创 2024-04-02 21:42:20 · 986 阅读 · 0 评论 -
蓝桥杯刷题_day10
子数组类动态规划问题原创 2024-04-01 22:22:41 · 1408 阅读 · 0 评论 -
解锁背包问题:C++实现指南
背包问题是计算机科学中的经典优化问题,常出现在算法研究和编程面试中。它是组合优化的一个例子,可以用来演示动态规划的强大之处。本文将介绍背包问题的两种变体:01背包和完全背包,以及它们的C++实现。原创 2024-03-31 20:45:06 · 556 阅读 · 0 评论 -
广度优先搜索(BFS)算法详解
广度优先搜索(Breadth-First Search,BFS)是一种遍历或搜索树和图的算法。它从树的根(或图的某一顶点)开始,探索邻近的节点,然后再对每个邻近节点做同样的操作。BFS在搜索最短路径问题、层次遍历树、图的连通性等方面有着广泛的应用。原创 2024-03-31 20:38:22 · 1264 阅读 · 0 评论 -
深度优先搜索(DFS)算法深入探索与实践
深度优先搜索(Depth-First Search,DFS)是计算机科学中的一种基础搜索算法,用于遍历或搜索树结构或图结构中的节点。与广度优先搜索不同,DFS的主要策略是尽可能深地探索图的分支,这种策略通过后进先出(LIFO)的栈结构或者递归调用实现。让我们深入了解DFS的工作原理、如何实现,以及它的应用场景。原创 2024-03-31 20:34:17 · 930 阅读 · 0 评论 -
蓝桥杯刷题_day9_动态规划_简单多状态
对于这类股票买卖问题,动态规划是一个常见且有效的解法。动态规划的核心在于找到状态表示和状态转移方程。对于股票买卖问题,通常有两个状态需要考虑:当前持有股票和当前不持有股票。针对特定的问题,可能还需要增加额外的状态来满足题目的限制条件,例如冷冻期和最大交易次数。原创 2024-03-31 16:14:54 · 1096 阅读 · 0 评论 -
蓝桥杯刷题_day8_动态规划_简单多状态
这些都是经典的动态规划问题,大多数情况下,我们可以通过定义适当的状态数组,并根据题目要求设计出对应的状态转移方程来解决这些问题。原创 2024-03-30 17:33:08 · 1350 阅读 · 0 评论 -
动态规划-解决优化问题的算法精髓
动态规划(Dynamic Programming,DP)是一种解决最优化问题的算法方法。它的核心思想是将复杂的问题分解成更小的子问题,并通过有效地组合这些子问题的解来得到原问题的解。重叠子问题: 问题的递归解会反复求解相同的子问题。动态规划通过记忆化或自底向上的方式避免了重复计算。最优子结构: 问题的最优解可以由其子问题的最优解组合而成。这意味着我们可以通过解决子问题来构建原问题的最优解。理解这两个特点是掌握动态规划的关键。首先,我们需要定义子问题。这通常涉及将原问题分解成更小、更易于管理的部分。原创 2024-03-30 10:37:38 · 1067 阅读 · 0 评论 -
蓝桥杯刷题_day7_动态规划_路径问题
恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。原创 2024-03-29 23:32:01 · 1269 阅读 · 0 评论 -
蓝桥杯_day6
动态规划例题:不同路径、不同路径进阶、拿金币、珠宝的最高价值原创 2024-03-28 18:04:38 · 1190 阅读 · 0 评论 -
蓝桥杯刷题-day5-动态规划
使用动态规划解决经典例题,使用最小花费爬楼梯、解码方法原创 2024-03-27 23:15:43 · 771 阅读 · 0 评论 -
蓝桥杯刷题_day4_动态规划
在这篇博客中,我们将深入探讨动态规划算法在解决两个有趣问题上的应用:第 N 个泰波那契数(Tribonacci Number)和三步问题(Three Steps Problem)。这两个问题虽然表面不同,但它们的解决方案都可以通过动态规划的技术来优雅地实现。原创 2024-03-26 20:19:28 · 1023 阅读 · 0 评论 -
动态规划算法入门
动态规划是一种强大的算法设计技术,它通过将原问题分解为相对简单的子问题,并存储子问题的解来避免重复计算,最终获得原问题的最优解。掌握动态规划的基本原理和思路,对于解决许多复杂的优化问题非常有帮助。在实际应用中,动态规划还有许多优化技巧,如状态压缩、滚动数组等,可以进一步提高算法的空间和时间效率。此外,有些问题还可以用贪心算法或其他方法来解决,需要根据具体情况选择合适的算法。希望通过本文,读者能对动态规划有一个基本的认识,并能在实际问题中灵活运用。原创 2024-03-25 22:33:40 · 512 阅读 · 0 评论 -
蓝桥杯刷题_day3
01字串、判断闰年、斐波那契数列、圆的面积、序列求和原创 2024-03-24 21:45:06 · 1048 阅读 · 0 评论 -
蓝桥杯刷题_day2
杨辉三角、整数查找、数列特征、字母图形原创 2024-03-24 01:06:02 · 579 阅读 · 0 评论 -
蓝桥杯刷题_day1_回文数_水仙花数_进制转换
1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n。F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1。123321是一个非常特殊的数,它从左边读和从右边读是一样的。给定n个十六进制正整数,输出它们对应的八进制数。输出n行,每行为输入对应的八进制正整数。编程求所有满足这种条件的三位十进制数。原创 2024-03-22 22:00:32 · 729 阅读 · 1 评论 -
斐波那契数列
当一个问题直接求解不好求解时,如果可以将其划分成其子问题,并且子问题与原来的问题具有相同的解法时,就可以使用递归来进行解决。原创 2023-06-20 16:44:49 · 219 阅读 · 0 评论 -
二分查找/折半查找
在计算机科学中,二分查找,也称为折半查找,是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。输入n个不超过10^9的单调不减(单调不减:后面的数字不小于前面的数字,可以等于或者大于)的非负整数,然后进行m次询问。比较中间下标与要查找元素findnum的大小,确定二次查找的范围,在MID的左半区还是右半区。原创 2023-06-18 12:43:27 · 364 阅读 · 0 评论 -
解析什么是冒泡排序!
在上第一节体育课的时候,你作为体育委员需要将班里的同学进行排序,排序的依据是身高。按照你自己的想法,你可以让最高的在最左边,也就是从高到低排列;也可以让最高的站在最右边,也就是从低到高排列。现在比如,让他们集合之后,在排列之前肯定都是高高矮矮参差不齐,你想要把他们按从低到高排列。原创 2023-06-17 20:21:43 · 87 阅读 · 1 评论