![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
文章平均质量分 80
数据结构与算法
桌面守护者
积微成著:积累越多的微技能,处理问题有越多的思考和选择!
展开
-
如何找基址,原理是什么
CE (cheat engine)修改数值来作弊是一种很大众化的游戏作弊方式了。尤其是CE设计的很人性化,几乎不需要任何专业知识就能用。但是有一个问题就是,每次开游戏或者有什么变化,就要重新找内存地址。小时候没学过编程,但是经常在网上逛,看别人怎么作弊。经常有人提到“基址”这个词。它就是用来解决上面那个问题的关键。如何找基址是写作弊器的核心部分。有很多教人怎么找基址的教程,基本上都是一步一步,很详细的教怎么做,但是都没有讲为什么。(废话。。受众都是小时候的我那样的,不懂编程,就想着作弊爽转载 2021-03-05 09:39:10 · 2901 阅读 · 1 评论 -
指针、变量、句柄
我直接就上总结了,我参考的资料会在最下面放出来!指针:指向系统中【物理内存】的地址,也就是内存地址;指针与内存地址管理的关系有指针了为什么还要变量呢,直接用指针就可以访问地址了为什么要有变量呢,不是多此一举吗?简单的例子:z = x + y直接用指针:*(int*)(0x1000) = *(int*)(0x1004) + *(int*)(0x1008);指针的优点:可以提高程序的编译效率和执行速度,使程序更加简洁。 通过指针被调用函数可以向调用函数处返回除正常的返回值之外的...原创 2021-01-21 23:33:03 · 312 阅读 · 0 评论 -
指针与内存地址管理的关系
int 变量存的是 int 型的值,char 变量存的是 char 型的值,而指针,它是一种特殊的变量,存的是内存地址,按照这个模板可以把它理解为:“内存地址变量” 存的是 “内存地址”,等价于:“指针变量” 存的是 “内存地址”。操作系统进行资源调度时,会根据这些变量存的地址去请求 和 使用那个地址代表的内存区域,这就仿佛像是这个变量存的地址指向了某片内存,人们用 “指针” 来统称所谓的 “内存地址变量”。因此,任何跟指针有关的概念,都可以联系内存地址加以理解,二者必然有联系,数组与指针,函数与指转载 2021-01-21 20:43:51 · 200 阅读 · 1 评论 -
图的遍历 - 深度优先和广度优先
深度优先搜索的图文介绍1. 深度优先搜索介绍图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通的顶点都被访问到。 若此时尚有其他顶点未被访问到,则另选一个未被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。显然,深度优先搜索是一个递归的过程。2. 深度优先搜索图解转载 2020-09-12 16:35:46 · 366 阅读 · 0 评论 -
搜索算法 - 深度优先和广度优先
1、区别 1) 二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法是采用队列。 2) 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。要特别注意的是,二叉树的深度优先遍历比较特殊,可以细分为先序遍历、中序遍历、后序遍历。具体说明如下:先序遍历:对任一子树,先访问根,然后遍历其左子树,最后遍历其右子树。 中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树。 后序遍历:对任一子树,先遍历其左子...转载 2020-09-12 16:37:10 · 437 阅读 · 0 评论 -
数组、链表、堆栈、队列
数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合。听起来是不是很抽象,简单理解:数据结构就是描述对象间逻辑关系的学科。比如:队列就是一种先进先出的逻辑结构,栈是一种先进后出的逻辑结构,家谱是一种树形的逻辑结构!(初学数据结构的时候很不理解为什么有“栈”这个东西;队列很容易理解---无论购物就餐都需要排队;栈可以认为就是个栈道---只允许一个人通过的小道,而且只能从一端进入,然后再从这端返回,比如你推了个箱子进去啦,第二个人也推个箱子进去,此时只能等后进来的这个人拉着箱子出去后,你才能退出。)转载 2020-09-12 16:28:17 · 270 阅读 · 0 评论 -
浅谈单链表头结点的作用
带头结点 不带头节点 空 I II 非空 III IV 引入头结点的好处使得在链表头部的操作(如:插入删除等)与在链表中部与尾部一致(统一) 使非空链表与空链表的操作统一以插入为例,分析上述两点好处//I 带头节点的单链表(空) 插入节点 s->next = H->next; H->next = s;//II 不带头节点的单链表(空) 插入节点 ...转载 2020-09-12 16:21:21 · 2726 阅读 · 0 评论 -
高级语言 和 低级语言 的区别
高级语言:C、C++、Java、Python、Pascal、Lisp、Prolog、FoxPro、易语言等,都是高级语言,相对于低级语言来说,高级语言采用易于识别和记忆的字符来作为关键字,也更接近人类的思维方式,编写容易读写性好,开发效率更高。a=a+b 的表达方式:int a;int b;a=a+b;重点是,高级语言是可移植的,做少量修改甚至无需修改,即可将代码运行在不同平台的计算机上。低级语言(包括机器语言和汇编语言):机器语言:计算机硬件只能识别“断开”和“闭合.转载 2020-08-27 14:21:21 · 2923 阅读 · 0 评论 -
三种迷宫算法(深度优先、随机Prim、递归分割)
之前同学参加面试,面试官问到迷宫生成算法,这个问题自己想了下也没有好办法,所以就查询了相关资料。这里进行了相关整理:本文主要讲解的迷宫生成算法有三种:2.Randomized Prim's algorithm(随机Prim算法,让我想起了最小生成树的Prim算法)3.Recursive division (递归分割算法)首先,为了方便后续处理,默认的迷宫元素表示为[x,y,w]:1.我们的迷宫为常规的矩形,因此可以用二维表示一个迷宫单元,每个迷宫单元表示为一个二维数组元素[x,y...转载 2020-06-30 18:08:16 · 4089 阅读 · 0 评论 -
A*寻路算法详解
在我们平时打小游戏的时候,有时候会遇到一些小怪兽,这些小怪兽会自动追击我们的玩家的角色,但是,通常我们玩家的路线并不是固定的,那么这些小怪兽要如何自动绕开障碍物,走什么样的路线,才能最快地进行追击呢,答案就是A*寻路算法。A* 算法是一种启发式搜索算法。本质上来讲,可以算作是广度优先搜索算法的改进。我们知道,广度优先搜索总能找到路径最短的最优解,因为它每次新的一轮遍历永远是离起始点最近的位置,这样,当扫描到目标点时,可以保证目标点的距离是离起点距离最近的,也就是找到了寻路的最优解。A*算法的原理是什转载 2020-06-30 16:01:50 · 1037 阅读 · 0 评论 -
启发式寻路算法
启发函数 (Heuristic Function)盲目搜索会浪费很多时间和空间, 所以我们在路径搜索时, 会首先选择最有希望的节点, 这种搜索称之为"启发式搜索 (Heuristic Search)"如何来界定"最有希望"? 我们需要通过启发函数 (Heuristic Function)计算得到.对于网格地图来说, 如果只能四方向(上下左右)移动,曼哈顿距离(Manhattan distance)是最合适的启发函数.function Manhattan(node) = dx...转载 2020-06-29 17:05:53 · 871 阅读 · 0 评论