最小生成树 Prim算法 java代码实现
/*
*日期:2010-04-18 11:37
*开发者:heroyan
*联系方式:zndxysf@126.com
*功能:无向图最小生成树Prim算法实现案例
*/
import java.util.Scanner;
import java.util.Arrays;
import java.util.ArrayList;
public class SpanningTree{
private static int MAX = 100;
private double cost[][] = new double[MAX][MAX];
private ArrayList<Edge> edge = new ArrayList<Edge>();
private int[] near = new int[MAX];
private static double INFINITY = 99999999.99;//定义无穷大
private double mincost = 0.0;//最小成本
private int n;//结点个数
public SpanningTree(){}
public static void main(String args[]){
SpanningTree sp = new SpanningTree();
sp.init();
sp.prim();
sp.print();
}
//初始化
public void init(){
Scanner scan = new Scanner(System.in);
int p,q,w;
System.out.println("spanning tree begin!Input the node number:");
n = scan.nextInt();
//二维数组的填充要注意
for(int i = 0; i < MAX; ++i){
Arrays.fill(cost[i],INFINITY);
}
System.out.println("Input the graph(-1,-1,-1 to exit)");
while(true){
p = scan.nextInt();
q = scan.nextInt();
w = scan.nextInt();
if(p < 0 || q < 0 || w < 0){
break;
}
cost[p][q] = w;
cost[q][p] = w;
}
Edge tmp = getMinCostEdge();
edge.add(tmp);
p = tmp.start;
q = tmp.end;
mincost = cost[p][q];
for(int i = 1; i <= n; ++i){
if(cost[i][p] < cost[i][q]){
near[i] = p;
}else{
near[i] = q;
}
}
near[p] = near[q] = 0;
}
//寻找最小成本的边
public Edge getMinCostEdge(){
Edge tmp = new Edge();
double min = INFINITY;
for(int i = 1; i < n; ++i){
for(int j = i+1; j <= n; ++j){
if(cost[i][j] < min){
min = cost[i][j];
tmp.start = i;
tmp.end = j;
}
}
}
//System.out.println(min);
return tmp;
}
//prim算法主体
public void prim(){
//找剩下的n-2条边
for(int i = 2; i < n; ++i){
double min = INFINITY;
Edge
相关文档:
Eclipse 具体的就不说了,都熟悉了O(∩_∩)O~, 最大的特点:它能接受由java开发者自己编写的开放源代码的插件。 NetBeans NetBeans是sun的唯一一款完全开源的产品,在功能上与Eclipse类似,但也有一些区别。如:它集成了最流行的Ajax,Eclipse需要安装第三方插件,Eclipse鼓励使用swt作为javaGUI库 ......
很久没有做java的项目了,今天逛了逛CSDN的论坛,很幸运的遇到这篇文章,写的不错。有几个要点,以前理解的都不透。所以收藏了,谢谢论坛ID:为 yrjxm007 的网友。 对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重 ......
第1章
Java基础
1.1 Java的历史和基本原理
1.2 Java字节码
1.3 Java术语
1.4 &nbs ......
采用欲扬先抑的手法谈谈java:
java没有指针只有引用是最大的败笔.正因为没有指针,很多操作要迂回婉转;垃圾收集机制也觉得是鸡肋,写个析构函数真的那么复杂吗, 有必要牺牲灵活性吗;函数调用的代价之高让人抓狂
但我还是选择了她:
java的纯面向对象特 ......
近期有个小CMS项目,由于服务器、人员以及管理制度等一系列问题,不得不采用Java Web+Access这种不伦不类的组合进行开发,期间遇到了一个小问题,那就是文章内容采用Access的“备注”类型存取时,发生自动截断的问题。也就是说,存进去10000字的文章,只能显示出3000 ......