算法
文章平均质量分 77
JavaMan_chen
我就是传说中的java男!
展开
-
java实现N皇后问题
N皇后问题描述:将 n 个皇后摆放在一个 n x n 的棋盘上,使得每一个皇后都无法攻击到其他皇后。深度优先遍历的典型案例。程序输入: n的个数(需>4) 棋盘上任意一个位置程序输出: 满足问题需求的棋盘坐标程序代码如下:Node类用于封装皇后的棋盘位置信息public class Node { private int x; p原创 2012-11-28 15:55:54 · 2814 阅读 · 0 评论 -
贪心法求解活动安排(java实现)
贪心法描述:贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。问题描述:现有一组活动由你安排,但要求你在最短的时间内安排尽可能多的活动。代码如下:Activity类用于封装活动对象,包括活动的开始时间和结束时间,另外实现原创 2012-11-29 10:07:04 · 5315 阅读 · 0 评论 -
动态规划法求解硬币找零(Java)
算法描述:动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。基本思想也是将待求解问题分解成若干个子问题,先求解子问题,并将子问题的结果保存下来,然后从这些子问题的解得到原问题的解。动态规划实质上是一种以空间换时间的技术,它在实现的过程中,不得不存储产生过程中的各种状态,所以它的空间复杂度要大于其它的算法。问原创 2012-11-30 09:15:16 · 8512 阅读 · 3 评论 -
Dijkstra算法求最短路径(java)
任务描述:在一个无向图中,获取起始节点到所有其他节点的最短路径描述Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra一般的表述通常有两种方式,一种用永久和临时标号方式,一种是用OPEN, CLOSE表方式用OPEN,CLOSE表的方式,其采用的是贪心法的原创 2012-12-04 09:25:09 · 54226 阅读 · 24 评论 -
Kruskal算法计算最小生成树(java)
最小生成树定义:每一个无向图可拆分成多个子图,在这些子图中,如果图的各个顶点没有形成回路,则是图的一颗生成树。最小生成树的意识是树的相邻节点距离之和最小。应用场景:张三被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。张三已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场。为了用最小的消费,他想铺设最短的光纤去连接所有的农场原创 2012-12-04 17:15:53 · 9982 阅读 · 8 评论 -
匈牙利算法求二分图的最优匹配(java)
算法应用场景:农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术。不幸的是,由于工程问题,每个牛栏都不一样。第一个星期,农夫约翰随便地让奶牛们进入牛栏,但是问题很快地显露出来:每头奶牛都只愿意在她们喜欢的那些牛栏中产奶。上个星期,农夫约翰刚刚收集到了奶牛们的爱好的信息(每头奶牛喜欢在哪些牛栏产奶)。一个牛栏只能容纳一头奶牛,当然,一头奶牛只能在一个牛栏中产奶。问如何匹配奶牛与牛栏以便原创 2012-12-06 11:22:56 · 7742 阅读 · 3 评论 -
FordFulkerson算法求网络最大流(java)
FordFulkerson算法3个核心的概念:残留网络、增广路径和流网络的割(详细介绍参考算法导论)所测试的网络结构图如图所示:第1次遍历在残留网络中找到S->V2->V1->V3->T这条增广路径(下图A),这时的网络流量如图B执行第2次遍历的时候在残留网络中找到S->V2->V4->T这条增广路径(下图A),这时的网络流量如图B执行第3次遍历的时候在残留网络中找到S原创 2012-12-10 11:34:08 · 7354 阅读 · 0 评论