数据结构与算法
文章平均质量分 77
BraumAce
谁说站在光里的才算英雄
展开
-
【HDU-1043】Eight 八数码(BFS之A*算法)
15 块拼图已有 100 多年的历史,即使你不知道它的名字,也一定见过它。它由 15 块滑动瓷砖组成,每块瓷砖上都有一个从 1 到 15 的数字,所有瓷砖都被装在一个 4×4 的框架内,其中缺少一块瓷砖。我们把这块缺失的瓷砖称为 "x";谜题的目的是将瓷砖排列成以下顺序:其中唯一合法的操作是将 "x "与与它共享一条边的其中一块牌交换。举例来说,下面的移动顺序可以解决一个略微混乱的谜题:原创 2023-08-02 13:48:25 · 323 阅读 · 0 评论 -
离散化简介
定义:把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例如:原数据:1, 999, 100000, 15;处理后:1, 3, 4, 2;原数据:{100, 200},{20, 50000},{1, 400};处理后:{3, 4},{2, 6},{1, 5};特征:主要分为连续特征和离散特征。离散化简介:离散化是程序设计中一个常用的技巧,它可以有效的降低时间复杂度。...原创 2022-08-21 23:29:08 · 452 阅读 · 0 评论 -
贪心与区间问题
算法中的贪心策略:只需要做出当前看来是最好的选择就能获得最好的结果,而不需要考虑整体上的最优。其关键在于贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。首先需要证明贪心策略是正确的,才可以考虑使用贪心算法解决该问题。常用的有两种:1. 反证法...... 2. 数学归纳法.........原创 2022-08-20 23:48:29 · 127 阅读 · 0 评论 -
DFS递归之迷宫问题
DFS递归之迷宫问题:1.能否逃出迷宫;2.逃出迷宫的最短路径;3.缺口迷宫。原创 2022-04-09 11:30:30 · 3607 阅读 · 0 评论 -
DFS递归之岛屿问题
三种岛屿问题的DFS模板:1.岛屿数量,2.封闭岛屿的数目,3.岛屿的最大面积原创 2022-04-08 11:37:52 · 895 阅读 · 3 评论 -
最小生成树
简单介绍两大算法——Prim算法 和 Kruskal 算法.原创 2022-05-08 17:47:55 · 4718 阅读 · 3 评论 -
最短路模板
最短路分为:单源最短路,包括Dijkstra算法、Bellman-ford算法和SPFA算法;以及多源最短路,包括Floyd算法。原创 2022-06-25 11:17:05 · 182 阅读 · 0 评论 -
并查集入门
有趣的并查集算法,主要解决图论中的 “动态连通性” 问题。原创 2022-05-02 17:28:18 · 1174 阅读 · 1 评论 -
图的搜索与遍历
1、深度优先搜索(DFS)即回溯算法,常用于解决需要枚举排序等问题,无需全部枚举,节省时间。使用栈stack实现,但不具有最短性。2、广度优先搜索(BFS)常用于解决连通性、最短路等问题,优先考虑每种状态和初始状态的距离,使用队列queue实现,具有“最短路”的性质。3、深度优先遍历4、广度优先遍历......原创 2022-07-06 21:17:07 · 238 阅读 · 2 评论 -
C++里的STL简介
一、vectorvector 本质上是一个动态数组,运用了一个倍增的思想empty( ) 和 size( ) 是所有容器都有的操作系统为某一程序分配空间时,所需时间与空间大小无关,与申请次数有关。可以存储一个二元组,first 第一个元素,second 第二个元素支持比较运算,以first为第一关键字,以second为第二关键字(类似于字典序),常用于排序二、pair三、string四、queue五、stack......原创 2022-06-30 20:40:55 · 271 阅读 · 1 评论 -
数组模拟链表
数组模拟单、双链表原创 2022-05-18 20:57:33 · 1683 阅读 · 1 评论 -
数组模拟堆的基本操作
1、作用:维护一个数组集合2、堆是一棵(完全)二叉树,长得非常平衡,除最后一层节点,所有节点均不为空,最后一层节点从左向右排列,根节点小于等于左右两个子节点,即小根堆。3、树的操作(1)存储:用一个一维数组存储树,下标从1开始。其中元素x 的左儿子为 2x,x 的右儿子为 2x + 1....原创 2022-07-01 22:45:57 · 265 阅读 · 0 评论 -
模拟栈与队列
手写数据结构中的栈与队列,模拟单调栈和单调队列。原创 2022-06-29 11:06:12 · 198 阅读 · 0 评论 -
求约数以及最大公约数与最小公倍数
介绍小学奥数之算数基本定理,求约数相关公式和如何求最大公约数与最小公倍数。原创 2022-05-24 21:26:15 · 458 阅读 · 1 评论 -
质数与合数
介绍基本整数知识,判断质数以及查找质数的几种筛法。原创 2022-05-21 14:46:12 · 390 阅读 · 0 评论 -
位运算简介
在现代计算机中所有的数据都以二进制的形式存储在设备中,即 0、1 两种状态。计算机对二进制数据进行的运算 (+、-、*、/) 都叫作 位运算,即符号位共同参与运算的运算。相比于在代码中直接使用 (+、-、*、/ ) 运算符,有时合理的运用位运算能提高代码在机器上的执行效率。另外还需要了解下 源码、反码、补码 :(1)正数的源码、反码、补码是一致的;(2)负数的反码是对源码按位取反,只是最高位(符号位)不变,补码是反码加 1 .(3)计算机的数字运算均是基于 补码 的。.........原创 2022-08-18 18:01:46 · 138 阅读 · 0 评论 -
高精度四则运算
高精度一般是对于大于 10 的 +-6 次方的计算,其数据范围大大超过了标准数据类型能表示的范围的运算,使用高精度来帮助运算。高精度运算类似于竖式运算 ,将字符串转化为数组,其数组的每一位元素对应着十进制数,满足十进制的 “满十进一” 的运算法则。需要注意的是,高精度数组存储采用倒序存储 ,从低位向高位逐位来计算,输出时也是采用倒序输出。1、高精度加法;2、高精度减法;3、高精度乘法;4、高精度除法......原创 2022-08-13 20:58:15 · 266 阅读 · 0 评论 -
递推与递归
1、递推算法是一种用若干步可重复运算来描述复杂问题的方法。递推是序列计算中的一种常用算法。通常是通过计算前面的一些项来得出序列中的指定项的值。2、递归有点类似于分治,递归地思想是把一个大的问题拆分成一个个小的问题,通过不断递归调用解决小问题,直到小问题全部被解决从而解决原来的大问题。......原创 2022-08-14 22:51:23 · 349 阅读 · 0 评论 -
前缀和与差分模板
一维和二维前缀和与差分:前缀和是指某个序列的前 n 项和,可以把它理解为数学上的数列的前 n 项和,而差分可以看成前缀和的逆运算。原创 2022-08-10 20:36:55 · 301 阅读 · 0 评论 -
二分算法模板
二分的本质并不是单调性,当一个数列满足单调性时一定可以二分,但二分不一定需要满足单调性。并且二分一定有答案,没有答案那只是没有符合题目要求的答案。二分分为两类:① 二分查找; ② 二分答案 ...原创 2022-08-07 19:23:22 · 288 阅读 · 0 评论 -
快排与归并排序
简单介绍快排和归并排序的一般写法和思路,重在理解!!!1. 快排属于分治算法,分治算法一般都有三步...2. 归并排序运用了双指针的思想,先递归再排序...原创 2022-08-05 18:05:00 · 882 阅读 · 0 评论 -
基础排序算法
简单介绍下几种基础排序算法:1. 基于分类的计数排序2. 比较元素大小的选择排序、冒泡排序、插入排序原创 2022-08-04 14:10:01 · 262 阅读 · 0 评论