摘要: 奇怪的电梯(洛谷P1135) 前言&吐槽 同样可以拿dfs,这道题怎么就难那么多呢? 题目描述 奇怪的电梯 算法设计 dfs的基本框架就是遍历一个结点的每一条路,所以我们的算法大概可以设计成这样 void dfsInEveryFloor() { if (当前楼层 == 目标楼层) { 做一些操作... retrun; } if 阅读全文
posted @ 2022-03-19 15:12 帝皇の惊 阅读(402) 评论(0) 推荐(0)
摘要: 跳马问题(洛谷P1644) 前言&吐槽 这道题用DFS很好做,唯一需要注意的是你正在下中国象棋,所以马是不能够向上向下走的,只能斜着走。 题目描述 跳马问题 算法设计 使用DFS搜下去就行了 void DFS(){ if(满足条件): ... return; if(选择一种分支): DFS() if(另一种): DFS() } 阅读全文
posted @ 2022-03-19 14:40 帝皇の惊 阅读(163) 评论(0) 推荐(0)
摘要: 逆波兰式(NOJ第8题) 前言 对于NOJ,其实我最想吐槽的就是没有测试点输入输出的数据,这样我们只能拿前辈的代码来进行测试。 就像这道题,我一开始全用的栈(因为课本上那道表达式的题用的就是栈),结果搁那耗了将近三个小时才想到合适的数据结构。 而且我在解题的过程中,发现编程题好像就是在让我们钻研数学的本质。让我们在种种限制下 阅读全文
posted @ 2022-03-17 15:53 帝皇の惊 阅读(320) 评论(0) 推荐(0)
摘要: 循环队列 循环队列是队列的一种顺序表示与实现方法。 每次入队会使rear往后走一位,出队会使front走一位。 入队 出队 我们可以看到rear指针总指向队里最后一个的下一个位置 此时当rear == front时,如果之前有元素出队,那么就会造成“队满”的假象。 此时使用取模运算可以解决这个问题。 因此队尾 阅读全文
posted @ 2022-03-16 14:35 帝皇の惊 阅读(401) 评论(0) 推荐(0)
摘要: LOCATE操作(NOJ第6题) 题目描述 思路&前言 这道题的思路很直观。创建循环双链表、填充数据、根据被访问节点增加访问数、根据访问量进行排序、输出即可。 我写的用到的函数如下 Node *insert(Node *, char x); //插入数据 void init(Node *head, int n); //初始化,n代表 阅读全文
posted @ 2022-03-15 15:11 帝皇の惊 阅读(115) 评论(0) 推荐(0)
摘要: 链队列 关于此数据结构&题外话 链队列是队列的一种,队列(Queue)是一种先入先出的数据结构。增加元素叫入队,删除元素叫出队。 我最近发现了拿类组织数据结构真的是一件很方便的事,因此这一期用的事模板+类,有关C++的代码我都会在旁标出C语言等价解释。 链队列的示意 可以看到,在入队时,将元素加入队尾。而在 阅读全文
posted @ 2022-03-14 21:42 帝皇の惊 阅读(92) 评论(0) 推荐(0)
摘要: 双端栈 关于双端栈 为了节省数组空间并增加栈的个数,可以使用双端栈。 双端栈的基本操作都和栈没太大区别,因此不再赘述。 此外,如果真的需要管理多个栈,使用数组+链栈是一个不错的选择 这种多栈形式仅仅是用数组管理链栈而已,不再赘述 实现 仅实现双端栈的插入删除初始化操作。 #include <iostream 阅读全文
posted @ 2022-03-13 21:09 帝皇の惊 阅读(496) 评论(0) 推荐(0)
摘要: 链栈 链栈与栈的逻辑结构相同,只不过存储结构不同。 链栈的表头指针为栈顶指针。 链栈的优点是不用指定内存。只要操作系统没用光,就能一直push。 按理来说应该会有一个表示这个栈长度的私有量,但是因为我懒,所以没弄 示意图 这里仅给出链栈的pop与push操作 #include <iostream> str 阅读全文
posted @ 2022-03-11 17:05 帝皇の惊 阅读(50) 评论(0) 推荐(0)
摘要: 栈 关于栈 栈是一种后进先出的数据结构,栈中允许进行插入、删除操作的一段位栈顶,另一端则称为栈底。栈中没有元素时为空栈。栈的插入删除操作分别称为进栈和出栈。因此每次进栈都会放在原栈顶元素之上并成为新的栈顶,而每次出栈都会拿出当前栈顶元素,并更新栈顶。 我认为这是一种比较重要的数据结构,因为操作系统中许多 阅读全文
posted @ 2022-03-10 21:53 帝皇の惊 阅读(403) 评论(0) 推荐(0)
摘要: 双链表求500位Π 题目描述: 思路分析: 根据上面给出的公式,我们可以知道每一项都是前一项乘 但是考虑到会出现的大数,不能直接用long long来进行存储,绝对会溢出。又题目限定了使用双链表,因此我们使用双链表。 最主要需要解决的问题是大数的加法、乘法除法。解决方案见下。 另外,可以给第一项直接乘6,这样之后每一项 阅读全文
posted @ 2022-03-09 17:08 帝皇の惊 阅读(237) 评论(0) 推荐(1)