陣列拓展——使用稀疏陣列實現存取五子棋棋盤、殘局
阿新 • • 發佈:2022-04-11
稀疏陣列使用例項:
使用稀疏陣列實現存取五子棋棋盤、殘局:
public class ArrayDemo08 { public static void main(String[] args) { //1.建立一個二維陣列 11*11 0:沒有棋子, 1:黑棋 2:白棋 // int[][] array1 = new int[11][11]; array1[1][2] = 1; array1[2][3] = 2; //輸出原始陣列 System.out.println("輸出原始的陣列"); for (int[] ints:array1){ for (int anInt:ints){ System.out.print(anInt+"\t"); } System.out.println(); } //轉換為稀疏陣列來存 //獲取有效值的個數 int sum = 0; for (int i = 0; i < 11; i++) { for (int j = 0; j < 11; j++) { if (array1[i][j]!=0){ sum ++; } } } System.out.println("有效值的個數"+sum); //建立一個稀疏陣列 int[][] array2 = new int[sum+1][3]; array2[0][0] = 11; array2[0][1] = 11; array2[0][2] = sum; //遍歷二維陣列,將非零的值,存放稀疏陣列中 int count = 0; for (int i = 0; i < array1.length; i++) { for (int j = 0; j < array1[1].length; j++) { if (array1[i][j]!=0){ count++; array2[count][0] = i; array2[count][1] = j; array2[count][2] = array1[i][j]; } } } //輸出稀疏陣列 System.out.println("稀疏陣列!"); for (int i = 0; i < array2.length; i++) { System.out.println(array2[i][0]+"\t" +array2[i][1]+"\t" +array2[i][2]); } //還原稀疏陣列 System.out.println("還原稀疏陣列"); //1,讀取稀疏陣列 int[][] array3 = new int[array2[0][0]][array2[0][1]]; //2,給其中的元素還原他的值 for (int i = 1; i < array2.length; i++) { array3[array2[i][0]][array2[i][1]] = array2[i][2]; } //3,列印原陣列 for (int[] ints:array3){ for (int anInt:ints){ System.out.print(anInt+"\t"); } System.out.println(); } } }
執行結果:
輸出原始的陣列 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 有效值的個數2 稀疏陣列! 11 11 2 1 2 1 2 3 2 還原稀疏陣列 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Process finished with exit code 0