- 博客(10)
- 收藏
- 关注
原创 深度优先搜索
DFS 深度优先搜索:从起始节点开始,尽可能深入地沿着一条路径进行探索,直到无法继续(比如到达叶子节点或已访问过的节点),然后回溯到上一个节点,继续探索其他未探索的分支,直到遍历完所有可达节点或找到目标节点。用法:迷宫问题、拓扑排序、判断图的连通性、寻找图中所有可能的路径等。
2025-04-06 16:47:44
78
原创 广度优先搜索
BFS:广度优先搜索。一层一层地向外扩展探索,先访问起始节点的所有邻居节点,再依次访问这些邻居节点的邻居节点。不用set()存储结果是因为集合有无序性。用途:最短路径,联通分量,树的层次遍历。
2025-04-06 15:54:42
143
原创 python哈夫曼树
找到 {p_i} 中最小的两个数,设为 pa 和 pb,将 pa 和 pb 从 {p_i} 中删除掉,然后将它们的和加入到 {p_i} 中。给出一列数 {p_i} = {p0, p1, …在这里,我们只关心 Huffman 树的构造过程。本题任务:对于给定的一个数列,现在请你求出用该数列构造 Huffman 树的总费用。在上面的操作过程中,把所有的费用相加,就得到了构造 Huffman 树的总费用。重复步骤 1,直到 {p_i} 中只剩下一个数。输出用这些数构造 Huffman 树的总费用。
2025-04-06 12:06:50
216
原创 堆/优先队列
Python 中 heapq 模块里的一个函数,它的作用是从最小堆中移除并返回堆顶元素(也就是堆中的最小元素),同时会自动调整剩余元素的结构,以维持最小堆的性质。for i,x in enumerate(nums):#enumerate 函数可以同时返回序列的索引和对应的值:x=nums[i]注意:python的heap,默认是小堆顶,堆顶元素大于左右孩子。将item添加到heap中,并维持堆的不变性。弹出的最小元素: 4。
2025-04-06 10:30:51
607
原创 二分查找python初学者练手和如何输出字符和数字组合
也叫折半查找,是一种在有序数组(或列表)中查找某一特定元素的搜索算法。它的基本思想是将有序数组分成两部分,然后比较目标值与中间元素的大小,根据比较结果决定在数组的哪一半继续查找,,直到找到目标值或者确定目标值不存在为止。也可以增加索引,格式等。
2025-04-05 18:34:07
165
原创 亲戚关系判断(并查集)
若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。规定:x 和 y 是亲戚,y 和 z 是亲戚,那么 x 和 z 也是亲戚。如果 x,y 是亲戚,那么 x 的亲戚都是 y 的亲戚,y 的亲戚也都是 x 的亲戚。p 行,每行一个’Yes’或’No’。表示第 i 个询问的答案为 “具有” 或 “不具有” 亲戚关系。
2025-04-05 15:19:58
536
原创 python贪心算法
思路:寻找比money小的最大值,money整除后得到需要多少次面额的硬币。在求出剩余后对剩余重复上述操作。西索一下这个:float("{:.2f}".format(money-money_list[i]*n))
2025-04-04 18:58:03
190
原创 用python代码实现插入排序与希尔排序
希尔排序的基本原理是利用一个增量序列,将待排序的元素分成若干个子序列,对每个子序列分别进行组内排序。当增量最终减至 1 时,整个序列就被合并为一个,此时再进行一次插入排序,排序完成。比如长度为8的数组第一次隔4个位置的元素放在一组进行比较,小的放在前面那组,大的放后面。比如第一个是已经排序的5,8,而右边是未排序的2把它和8进行比较,发现小于8则与8互换位置,在与5进行比较发现小于5在与5进行比较,得到[2,5,8,3, 4, 6]刚学python,代码肯定是有问题的,剩下的排序以后发,饿了吃饭去了。
2025-04-04 18:47:24
387
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人