1. 程式人生 > 其它 >陣列拓展——使用稀疏陣列實現存取五子棋棋盤、殘局

陣列拓展——使用稀疏陣列實現存取五子棋棋盤、殘局

稀疏陣列使用例項:

使用稀疏陣列實現存取五子棋棋盤、殘局:

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