摘要: 先定义图类: class MGraph { int verxs;// 表示图的节点个数 char[] data;// 存放节点数据 int[][] weight;// 存放边,就是我们的邻接矩阵 public MGraph(int verxs) { this.verxs = verxs; data 阅读全文
posted @ 2021-06-08 16:47 shanaprprpr 阅读(62) 评论(0) 推荐(0)
摘要: 本算法需要预先定义边的个数,顶点数组和邻接矩阵。 首先是构造器,来初始化边,数组,邻接矩阵。 public KruskalCase(char[] vertexs, int[][] matrix) { this.vertexs = vertexs; this.matrix = matrix; int 阅读全文
posted @ 2021-06-08 16:43 shanaprprpr 阅读(63) 评论(0) 推荐(0)
摘要: 本算法旨在找出最先匹配字符串。 先定义的方法为计算待匹配字符串的最长相等的前缀与后缀: public static int[] kmpNext(String dest) { int[] next = new int[dest.length()]; next[0] = 0; for(int i = 1 阅读全文
posted @ 2021-06-08 16:33 shanaprprpr 阅读(59) 评论(0) 推荐(0)
摘要: 完成这个算法,需要预先定义如下几个变量:棋盘的行列数,棋盘是否已被访问过,是否所有位置都被访问。 首先需要设置一个算法确定当前可走的位置: /** * 根据当前位置计算马还能走哪些位置,并放入到一个集合中 * * @param curPoint * @return 该集合 */ public sta 阅读全文
posted @ 2021-06-08 16:27 shanaprprpr 阅读(117) 评论(0) 推荐(0)
摘要: 本算法采用广播电台覆盖区域来做演示,设置五个电台集合,存放可以覆盖的区域,再设置一个总集合,存放所有的区域,然后只要未全覆盖,则每次都选择能包括最多未覆盖区域的电台,这就是一个最优解。代码如下: public static void main(String[] args) { HashMap<Str 阅读全文
posted @ 2021-06-08 16:07 shanaprprpr 阅读(42) 评论(0) 推荐(0)
摘要: 主类: public class FloydAlgorithm { public static void main(String[] args) { char[] vertex = { 'A', 'B', 'C', 'D', 'E', 'F', 'G' }; int[][] matrix = new 阅读全文
posted @ 2021-06-08 09:13 shanaprprpr 阅读(52) 评论(0) 推荐(0)
摘要: 主类: public class DijkstraAlgorithm { public static void main(String[] args) { char[] vertex = { 'A', 'B', 'C', 'D', 'E', 'F', 'G' }; int[][] matrix = 阅读全文
posted @ 2021-06-08 09:04 shanaprprpr 阅读(55) 评论(0) 推荐(0)
摘要: 主函数依旧省略,直接贴实现的代码。 /** * * @param num 有几个盘 * @param a,b,c 盘所在位置 */ public static void hanoiTower(int num, char a, char b, char c) { if (num == 1) {//只剩 阅读全文
posted @ 2021-06-08 08:52 shanaprprpr 阅读(47) 评论(0) 推荐(0)
摘要: 本算法用来进行二分查找的非递归实现 /** * 二分查找的非递归实现 * * @param arr 带查找的数组 * @param target 需要查找的数 * @return 返回对应下标,-1表示没有找到 */ public static int binarySearch(int[] arr, 阅读全文
posted @ 2021-06-08 08:42 shanaprprpr 阅读(72) 评论(0) 推荐(0)