算法
CHOOOU
这个人不懒,但是他什么都没有留下
展开
-
AVL树的 java 代码实现
代码public class AvlTree<Type extends Comparable<? super Type>>{ private static class AvlNode<Type> { private Type data; private int height; private AvlNode<Type> leftChild;原创 2017-07-16 17:43:40 · 592 阅读 · 0 评论 -
棋盘覆盖问题 分治和栈实现
#include<iostream>#include<math.h>#include <algorithm>#include<string>#include<stack>using namespace std;int chessboard[1024][1024];int type = 0;int N;struct ch...原创 2018-11-07 11:15:14 · 790 阅读 · 0 评论 -
最大网络流问题
之前参加阿里巴巴的笔试碰到一最大网络流的题目。因为之前没有看过这类算法,所以还是自然没做出。今天抽空看了看。了解了下基本概念和求解流程。这里简单总结下。主要内容来自百度文库某ppt。在每幅图片的下面我会给出一些说明性文字。本图示最大流的一个实例。由此,可以引出最大流的一些基本的定义和概念可以这样看,图就是一种管道,管道有最大通过流量的限制,图中边的权值就是所谓的“容量”。同时,注意有唯一的源点和汇点转载 2017-07-26 08:25:11 · 320 阅读 · 0 评论 -
Dijkstra算法的 java 实现
求无权最短路径,使用广度优先搜索即可。如果是有权图,就要用Dijkstra算法。Dijkstra算法是一种贪婪算法。读者可以结合输出和注释尝试理解。代码import java.util.Arrays;public class Test { //无限大 static int INF = Integer.MAX_VALUE; //dis保存某点到各点的花费,不可到为INF原创 2017-07-25 21:11:42 · 584 阅读 · 0 评论 -
一个简单拓扑排序的 java 实现
如果含有圈,不可能进行拓扑排序,在这里我们假设图中不含圈。要将下图进行拓扑:我们计算每个顶点的入度,将所有入读为零的顶点放入初始为空的队列,当队列不为空,删除一个顶点v,并将与v邻接的所有顶点的入度均减1。只要一个顶点的入度降为0,就把该点放入队列中。排序就是顶点出队的顺序。import java.util.Arrays;import java.util.LinkedList;import ja原创 2017-07-24 15:58:37 · 3832 阅读 · 1 评论 -
广度优先搜索与深度优先搜索的 java 实现
1.广度优先搜索这个示例来解决某个定点到其他所有顶点的无权最短路径长度,并将每一步的队列变化输出。import java.util.Arrays;import java.util.LinkedList;import java.util.Queue;public class Test { static int [] distance; //有向图的邻接矩阵表示法 static原创 2017-07-24 01:23:55 · 592 阅读 · 0 评论 -
不相交集合(转)
[置顶] 并查集详解 (转) 这个文章是几年前水acm的时候转的, 当时也不知道作者是谁, 要是有人知道的话说一下吧并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个转载 2017-07-23 20:22:56 · 835 阅读 · 1 评论 -
链接法散列表的 java 实现
import java.util.*;/* * 此散列表只对提供适当 equals 方法和返回一个 int 型量的 hashCode 方法的对象工作 */public class SeparateChainingHashTable<Type> { private static final int DEFAULT_TABLE_SIZE = 5; private List<Type>原创 2017-07-19 14:12:26 · 490 阅读 · 0 评论 -
优先队列的 java 代码实现
代码public class BinaryHeap<Type extends Comparable< ? super Type>> { private static final int DEFAULT_CAPACITY = 5; private int currentSize; private Type [] array; //将空穴下沉 private void原创 2017-07-22 18:45:23 · 482 阅读 · 0 评论 -
二叉搜索树的 java 代码实现
代码//二叉树要求所有项都能排序,使用Comparable接口表示任何两项都可以用compareTo方法比较//另一种方法是使用Comparatorpublic class BinarySearchTree<Type extends Comparable<? super Type>> { //嵌套类,定义二叉树结点 private static class BinaryNode<原创 2017-07-15 15:11:58 · 373 阅读 · 0 评论 -
分治——最大子数组问题
代码public class Max { private static int max ( int [] a, int left, int right ){ //如果只有一个元素 if ( left == right ) if ( a[left] > 0 ) return a[le原创 2017-07-12 21:33:34 · 276 阅读 · 0 评论 -
联机算法——最大子数组问题
代码public class Max { private static int max ( int [] a ) { int sum = 0, thisSum = 0; for ( int i = 0; i < a.length-1; i++ ) { thisSum += a[i]; if ( thisSum > s原创 2017-07-13 00:04:57 · 283 阅读 · 0 评论