| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
xs8044
8年前发布

一种求离散数学传递闭包的算法java实现

[Java]代码    

import java.util.Scanner;      public class DiscreteMathematic {     static int row,col,n;   static int a;   int b = 0;   private int[][] A;   private int[][] B;   public static void main(String args[]) {    Scanner in = new Scanner(System.in);    System.out.println("请输入矩阵的行数");    row = in.nextInt();    System.out.println("请输入矩阵的列数");    col = in.nextInt();    System.out.println("请输入n的规模");    n = in.nextInt();    DiscreteMathematic x = new DiscreteMathematic();    x.A = new int[row][col];    System.out.println("请输入矩阵的元素(仅为0或1)");    for(int i = 0; i < row; i++) {     System.out.print("请输入第" + (i+1) + "行的元素: ");     for(int j = 0; j < col; j++) {      a = in.nextInt();      x.A[i][j] = a;     }    }    x.B = x.A;    x.echo(x);    x.pritn(x);    }   //实现算法   void echo(DiscreteMathematic x) {    for(int num = 2; num <= n; num++) {     change(x);     for(int i = 0; i < row; i++) {      for(int j = 0; j < col; j++) {       if(x.A[i][j] == 1 || x.B[i][j] == 1) {        x.B[i][j] = 1;       }      }     }    }   }   //改变A的值   void change(DiscreteMathematic x) {     for(int i = 0; i < row; i++) {      for(int j = 0; j < col; j++) {       if(x.A[i][j] == 1) {        for(int k = 0; k < row; k++) {         if(x.B[j][k] == 1) {          x.A[i][k] = 1;         }        }       }      }     }    }   //在屏幕上打印出B   void pritn(DiscreteMathematic x) {    for(int i = 0;i < row; i++) {     for(int j = 0; j < col; j++) {      System.out.print(x.B[i][j]);      System.out.print(" ");     }     System.out.println();    }   }  }