算法学习
CakingYe
一句话描述不了
展开
-
求最大公约数、求素数最优雅解法
求最大公约数 public static int gcd(int a, int b) { if((b == 0)) return a; return gcd(b, a % b); } public boolean is_prime(int n) { for(int i = 2; i * 1 <= n; i++) { if(n % i == 0) return fal...原创 2019-01-10 17:54:35 · 363 阅读 · 0 评论 -
用Java实现迷宫最短路径算法
宽度优先搜索迷宫最短路径用宽度优先搜索(bfs)相比用深度优先搜索(dfs)的好处在于bfs每次计算都是最短路径不存在重复计算,而dfs每计算出一条可行的路径都要与先前的路径比较,然后储存最短路径。而bfs的思想是先计算出围绕起点的所有点的距离并储存起来S是起点,数字为该点到S的距离根据该思想为下题写一段程序在N*M的迷宫中,计算出S到G的最短路径‘#’,’.’, ‘S’, 'G’...原创 2019-01-26 11:24:51 · 11168 阅读 · 3 评论 -
Java实现并查集
并查集是什么并查集可以高效的进行下面的两个操作查询元素a和元素b是否属于同一组合并元素a和元素b所在的组代码实现public class UnionFindSet { int [] par; //表示当前下标是父亲是谁,如per[3] = 1, 3的父亲是1。 int [] rank; //表示当前的树的高度 //查询树的根 public static int f...原创 2019-03-02 10:46:00 · 809 阅读 · 0 评论 -
单源最短路(Bellman - Ford算法)
题目描述(POJ2139)牛们最近在拍电影,所以他们准备去玩一个游戏——“六度分割”的变体。 游戏是这样进行的:每个牛离自己的距离是0度,如果两个不同的牛同时出现在一个电影里,那么他们之间的距离为1度,如果两只牛从未一起工作,但它们都与第三只牛一起工作,那么他们之间的距离为2度。 这N(2<=N<=300)头牛对找出那只牛与所有牛之间的平均距离最短感兴趣。当然,不算上他自己。这些牛...原创 2019-03-02 11:06:59 · 336 阅读 · 0 评论 -
非常简单好理解的求最大公约数(GCD)和最小公倍数(LCM)
//最大公约数 public static int gcd(int i, int j){ if(j == 0) return i; return gcd(j, i % j); } //最小公倍数 public static int lcm(int i, int j){ return i * j / gcd(i, j); }原创 2019-03-03 12:39:42 · 228 阅读 · 0 评论 -
Java求素数
//判断素数 public boolean is_prime(int n) { for(int i = 2; i * 1 &lt;= n; i++) { if(n % i == 0) return false; } return n != 1; }在某个范围内求素数 //埃氏筛法,求n范围内的所有素数 public static int prime_num(int ...原创 2019-03-04 10:13:35 · 241 阅读 · 0 评论 -
Java实现快速幂运算
x22 = x16 * x4 * x222的二进制为10110下面函数是求ab public static long pow(long a, long b) { long result = 1; long base = a; while(b > 0) { if((b & 1) != 0) { // 如果当前二进制尾数为1,将倍数记录 r...原创 2019-03-04 10:27:37 · 1814 阅读 · 1 评论 -
最小生成树(Krushal算法)
个人认为如果学过并查集的话,Krushal要比prim好用点,基本看到就会的那种下面用poj1251这道题来入门学习一下题目描述The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between vill...原创 2019-05-14 16:13:53 · 607 阅读 · 0 评论