1. 程式人生 > >(Java資料結構和演算法)拓撲排序

(Java資料結構和演算法)拓撲排序

參考博文

拓撲排序


public class Main {

	public static void main(String[] args){
		System.out.println("請輸入一個圖的鄰接矩陣(8X8):");
		int[][] map = new int[8][8];
		int[] inDegree = new int[8];
		for(int i = 0;  i < 8; i++){
			inDegree[i] = 0;
		}
		
		java.util.Scanner scan = new java.util.Scanner(System.
in); for(int i = 0; i < 8; i++){ for(int j = 0; j < 8; j++){ map[i][j] = scan.nextInt(); if(map[i][j] == 1){ inDegree[j]++; } } } String str = "abcdefgh";//使得字母和對應的下標數字對應 //拓撲排序 //每次幹掉一個節點,最多幹8次,8次幹不完,說明有環 for(int i = 0; i < 8; i++){ //找一個入度是0的節點,幹掉 for(int j =
0; j < 8; j++){ if(inDegree[j] == 0){ inDegree[j]--; System.out.print(str.charAt(j)+" "); //並刪除以j為起點的邊 for(int k = 0; k < 8; k++){ if(map[j][k] == 1){ inDegree[k]--; } } break; } } } System.out.println(); } }