![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 78
寻梦&之璐
这个作者很懒,什么都没留下…
展开
-
题目2:隐式图的搜索问题(A*算法解决八数码)代码实现
算法思想: 定义open表和close表,其中open表是用来存储待查验的节点,而close表是用来存储已查验过的节点(不需要再关注的节点) 把开始节点加入open表; 将开始节点拓展的子节点加入open表,将开始节点加入到close表; 将open表中的节点的耗散值也就是f进行从小到大的排序,此时open表中的第一个节点的耗散值最小,对open表中的第一个节点进行判断,如果这个节点是目标节点,则算法结束,无需进行以下步骤;反之,如果这个节点不是目标节点,则将这个节点进行扩展,再进行下一步; 判断n的可扩原创 2021-03-12 01:50:33 · 615 阅读 · 0 评论 -
题目3:文本文件单词的检索与计数(实现代码)
声明 BF的话主要是为了体现出KMP的高效之处,当然比BF更高效的还有BM,这里的话就不一一过多解释 BF算法 #include<iostream> using namespace std; //返回子串t在主串t中第pos个字符之后的位置;若不存在,函数返回0 //t非空,1≤pos≤s.size() int Index(string s, string t, int pos=0) //默认为0,默认从第一个元素开始查找 { int i = pos; //主串t当前下表原创 2021-03-12 00:14:44 · 1272 阅读 · 6 评论 -
题目1:学生成绩档案管理系统(代码实现)
文章目录DatabaseAccountsAccountsAccountsInOutStudentStudentStudentSysDAOAccountsDaoStudentDaoInAndOutMain实验截图 Database import java.util.ArrayList; import java.util.List; public class Database implements java.io.Serializable{ List<Accounts>accountsL原创 2021-03-03 13:33:27 · 295 阅读 · 0 评论 -
题目3:文本文件单词的检索与计数(实验准备)
文章目录声明实验任务实验要求所需知识导出所需知识API对文本文件的读取KMP算法的详解 声明 实验任务 建立一个文本文件,统计给定单词在文本文件中出现的总次数及位置; 实验要求 文本文件中每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写,统计给定单词在文本文件中出现的总次数,检索输出的某个单词出现在文本中的行号、在该行中出现的位置 设计数据量大的文本,进行子串的查询处理,分析算法运行的时间效率,对所有输出的匹配位置结果进行验证,以证明算法设计和实现的正确性。 用朴素模式匹配算法或KMP算法实原创 2021-03-01 22:51:34 · 661 阅读 · 0 评论 -
题目1:学生成绩档案管理系统(实验准备)
文章目录声明实验要求所需知识所需知识导出DAO运用简单排序算法双向冒泡排序快速排序希尔排序堆排序 声明 实验要求 学生信息录入,信息包括学号、姓名、专业、四门课成绩、总分、名次; 系统可对学生信息浏览、增加、删除和修改; 按学生成绩确定名次及信息输出,双向冒泡排序、希尔排序、快速排序、堆排序 要求可对学生信息查询,根据学号或姓名进行查找; 信息修改仅可修改四门课成绩; 文件存取学生信息。 所需知识 一些简单排序算法,以及DAO 所需知识导出 DAO运用 DAO (Database Access Obje原创 2021-03-01 22:25:09 · 391 阅读 · 0 评论 -
题目2:隐式图的搜索问题(A*算法解决八数码)
文章目录声明题目要求何为八数码?所需知识导出所需知识优先队列BFS算法缺陷A*搜索算法总结:实际操作 声明 题目要求 看过这次实验要求之后 总结:利用A*来解决八数码问题 何为八数码? 八数码游戏包括一个3X3的棋盘,棋盘上摆放着8个数字的棋子,留下一个空位。与空位相邻的棋子可以滑动到空位中。游戏的目的是要达到一个特定的目标状态。标注的形式化如下(举例): 2 3 1 8 4 7 6 5 (初始状态) 1 2 3 8 4 7 6 5 (目标状态) 所需知识原创 2021-03-01 16:28:50 · 6683 阅读 · 10 评论 -
常见排序总结
冒泡 #include <stdio.h> void bubble_sort(int array[], int length); void bubble_sort(int array[], int length) { int i, j, temp; for (i = 0; i < length - 1; i++) { for (j = 0; j < length - 1 - i; j++) { if原创 2020-12-24 16:52:16 · 124 阅读 · 1 评论 -
链表操作总结
声明 一年前闲着无聊时,研究研究了链表,当时写的时候也花了不少时间,当时我的思路就是这样 动态链表带头结点 #include <iostream> using namespace std; class node { public: int id; node* next; }; node* ListCreat() { node* head = NULL; head = (node*)malloc(sizeof(node)); if (head == NULL) { return原创 2020-12-24 16:24:22 · 154 阅读 · 1 评论 -
2020-11-23(彻底理解KMP)
引言 KMP本身不复杂,但网上绝大部分的文章(包括本文的2011年版本)把它讲混乱了。下面,咱们从暴力匹配算法讲起,随后阐述KMP的流程 步骤、next 数组的简单求解 递推原理 代码求解,接着基于next 数组匹配,谈到有限状态自动机,next 数组的优化,KMP的时间复杂度分析,最后简要介绍两个KMP的扩展算法。 全文力图给你一个最为完整最为清晰的KMP,希望更多的人不再被KMP折磨或纠缠,不再被一些混乱的文章所混乱。有何疑问,欢迎随时留言评论,thanks。 暴力匹配算法 假设现在我们面临这样..原创 2020-11-23 00:57:39 · 1190 阅读 · 0 评论 -
2020-11-22(树,森林和二叉树转换)
树转换成相应二叉树分两个步骤: a.在树中所有的兄弟结点之间加一横线 b.对每个结点,除了保留与其长子的连线外,去掉该结点与其它孩子的连线 (1.加线,在所有的兄弟结点之间加一条连线;2.去线,对树中每个结点,只保留它与第一孩子结点的连线,删除它与其他孩子结点之间的连线;3.层次调整,以树的根节点位轴心,将整颗树顺时针旋转一定的角度,使之结构层次分明) 无右孩子,只有左孩子 森林到二叉树的转换 a.先将森林中的每棵树变成二叉树 b.再将各二叉树的根节点视为兄弟从左至右连在一起,就形成一棵二叉树 一般左右孩子原创 2020-11-22 21:07:40 · 198 阅读 · 0 评论