摘要: 题目链接 思路:比较标准的深搜,没什么好讲的。 代码 class Solution { public static int []A; public static int []vis; public static int N; public static int []source; public Li 阅读全文
posted @ 2020-08-18 09:13 Bears9 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 题目链接 Java代码 import java.util.*; public class Main{ // N表示路口 M表示路口之间的路线数量 public static int N, M; // 用来装节点 public static int [][] graph; // 用来挑出最小花费的节点 阅读全文
posted @ 2020-08-17 10:25 Bears9 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 题目链接 /** * 简单单调栈 * 题目思路是:用栈来读取字符串(从前往后读),如果当前堆顶数字比字符串中的数字大,则抛出(至于为什么能成立,贪心,细节都在代码中) * 来个例子 * stack String * 3,3 2 此时抛出 3 (抛出3之后,堆顶元素依然3大于2,接着抛出) * */ 阅读全文
posted @ 2020-08-17 09:18 Bears9 阅读(158) 评论(0) 推荐(0) 编辑
摘要: (5)归并排序 递归代码, 代码来自 public int[] sort(int[] sourceArray) throws Exception { // 对 arr 进行拷贝,不改变参数内容 int[] arr = Arrays.copyOf(sourceArray, sourceArray.le 阅读全文
posted @ 2020-08-16 08:43 Bears9 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 参考大神博客 原理什么的直接看大神博客吧,我这里只做一个记录。 最小生成树 Kruskal思想 将边通过边权进行升序排序,每次选取最小的边(贪心),如果当前的边, 属于另外一组,则将其加入到另外一组,如果属于任何一组,则自成一组。 (算法能成立的核心是,排序 + 贪心 + 并查集合并) (1)连接两 阅读全文
posted @ 2020-08-14 13:30 Bears9 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 这个算法可以用来解决分组,合并等问题。 代码 1 public static int MAXN = 10010; 2 // 作为承载并查集的数组 3 public static int []f = new int[MAXN]; 4 // 初始化并查集 5 public static void ini 阅读全文
posted @ 2020-08-13 21:28 Bears9 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 第二题 题目 给一个n*m的表格染色,相邻(左右上下,紧挨着)的格子颜色必须不同,每个颜色染的格子数量必须相同,问最少需要多少种颜色。 思路 输入 输出 1,1 1 2,3 2 10,10 2 3,3 3 15,27 3 77,49 7 自己画个图推一推,发现了什么?仔细想想应该知道怎么做了。 第三 阅读全文
posted @ 2020-08-13 10:55 Bears9 阅读(213) 评论(0) 推荐(0) 编辑