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

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用

[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();
		}
	}
}

标签: 代码

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:用 jQuery实现图片等比例缩放大小

下一篇: 凯撒密码(加密与解密)