一種求離散數學傳遞閉包的算法java實現

xs8044 8年前發布 | 8K 次閱讀 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();
        }
    }
}
 本文由用戶 xs8044 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!