求传递闭包Warshall算法代码实现

来源:互联网 发布:365抽奖软件破解版 编辑:程序博客网 时间:2024/04/30 05:50

只是很简单的算法实现,还是分享一下吧,欢迎纠错


import java.util.*;

public class Warshall {
private int N;
private int[][] arr;
public Warshall(int N,int[][] arr ){
this.N=N;
this.arr=arr;
}
public void yunsuan(){
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
if(arr[j][i]==1){
for(int k=0;k<N;k++){
if(!(arr[j][k]==1&&arr[i][k]==1))
arr[j][k]=arr[j][k]+arr[i][k];
}
}
}
}
}
public void printresult(){
System.out.println("传递闭包结果为:");
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
System.out.print(arr[i][j]+" ");
}
System.out.println();
}

}

public static void main(String[] args)
{
System.out.println("请输入n阶矩阵的阶数:");
Scanner sn=new Scanner(System.in);
int N=sn.nextInt();
System.out.println("请输入原始矩阵(每行输入n个数字后输回车):");
int[][] arr=new int[N][N];
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
arr[i][j]=sn.nextInt();
}
}
Warshall ws=new Warshall(N,arr);
//ws.printresult();
ws.yunsuan();
ws.printresult();
}
}
0 0
原创粉丝点击