随笔分类 - 数据结构与算法
摘要:可以从四个方向走: 最简单的办法:完全4叉树(不做任何标记) 防止往回走:效率要高点(已经走过的点标记为1)(这样一定可以找出通路,如果一条分支里找到了通路,其他点没有必要再访问这些点,因为通路已经找到了,如果没有找到,则更不用访问这些点,因为这些点绝对走不通) 这里有一个重要结论:A到B点走不通,
阅读全文
摘要:递归是一个非常重要的概念,在计算机中用来表示无穷事物的一个重要手段,递归是一种表达相似性对象及动作的无限性构造的方法。 再说递归之前我们先要了解迭代。 迭代:迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始
阅读全文
摘要:八皇后问题是一个以国际象棋为背景的问题: 如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后。为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。 基本思路:将棋盘分为8行,每一行填充一个棋子,这样就能保证每一行不冲突,具体到每一行的话,又分为8种可
阅读全文
摘要:Prim算法主要的思路:将点集一分为二,通过找到两个点集之间的最短距离,来确定最小生成树,每次确定最短距离后,对两个点集进行更新。 具体的实现过程:难点就是如何找到两个点集之间的最短距离,这里设置两个数组,lowcost[i],mst[i],分别表示以i为终点的边和对应的起点,有了这两个数组就能够顺
阅读全文
摘要:迪杰斯特拉算法主要是产生从源点到其他点的最短路径,换句话说这些最短路径也有着长短的区别。 迪杰斯特拉算法的主要思路: 1.按照长短依次来产生最短路径。 2.并且在产生最短路径的过程中,用现有最短的最短路径来进行松弛操作。 具体实现的方法:数据结构:1个邻接矩阵啊a[n][n],1个一位数组dis[n
阅读全文
摘要:依旧把原来的烂代码翻出诶o(╯□╰)o。 排序二叉树的相关代码: 测试结果: 哈希表的有关操作: 测试结果:
阅读全文
摘要:大二时候写的烂代码,翻出来复习复习(o(╯□╰)o)。 代码: #include <stdio.h> #include <stdlib.h> #define Max_Size 100 struct Binode{ char res; struct Binode *lchild,*rchild; };
阅读全文
摘要:苦逼的大三狗,现在面临升学和找工作的双重压力,没办法只有把原来写的烂代码重新找出来,整理一下,复习复习(o(╯□╰)o)。 代码: 测试结果: 还添加两个基本的功能: 链表的排序。 以及链表节点的删除。
阅读全文
摘要:嘛嘛嘛,好像大家在实现Kruskal算法是都是用的边集数组,判断图的连通性咱不会,o(╯□╰)o(并查集诶)。 Kruskal算法: 规则: (1)对每一条边按照从小到大进行排序。 (2)加入边的时候判断这条边与之前的边是否构成回路,如果构成则放弃这条边,否则就加入到最小生成树中。 边集数组: 起点
阅读全文