溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

稀疏數(shù)組實(shí)現(xiàn)11*11圍棋的數(shù)據(jù)存儲(chǔ)與恢復(fù)

發(fā)布時(shí)間:2020-08-04 05:47:24 來源:網(wǎng)絡(luò) 閱讀:313 作者:DanChen1981 欄目:編程語言

代碼如下:

package com.atguigu.sparsearray;

/**
 * @author ChenDan
 * @date 2019/7/20 10:52
 */
public class SparseArray {
    public static void main(String[] args) {
        //創(chuàng)建一個(gè)原始的二維數(shù)組 11*11
        //0表示沒有棋子,1表示黑子,2表示藍(lán)子
        int[][] chessArr1 = new int[11][11];
        chessArr1[1][2] = 1;
        chessArr1[2][3] = 2;
        chessArr1[4][5] = 2;

        System.out.println("原始的二維數(shù)組~~");
        for (int[] row : chessArr1) {
            for (int data : row) {
                System.out.printf("%d\t", data);
            }
            System.out.println();
        }

        //將二維數(shù)組轉(zhuǎn)換為稀疏數(shù)組
        //先遍歷二維數(shù)組得到非0數(shù)據(jù)的個(gè)數(shù)
        int sum = 0;
        for (int i = 0; i < chessArr1.length; i++) {
            for (int j = 0; j < chessArr1[i].length; j++) {
                if (chessArr1[i][j] != 0)
                    sum++;

            }
        }
        //創(chuàng)建對(duì)應(yīng)的稀疏數(shù)組
        int sparseArr[][] = new int[sum + 1][3];
        //給稀疏數(shù)組賦值
        sparseArr[0][0] = 11;
        sparseArr[0][1] = 11;
        sparseArr[0][2] = sum;

        int count = 0; //count用于記錄是第幾個(gè)非0數(shù)據(jù)
        for (int i = 0; i < chessArr1.length; i++) {
            for (int j = 0; j < chessArr1[i].length; j++) {
                if (chessArr1[i][j] != 0) {
                    count++;
                    sparseArr[count][0] = i;
                    sparseArr[count][1] = j;
                    sparseArr[count][2] = chessArr1[i][j];

                }

            }
        }
        //輸出稀疏數(shù)組形式
        System.out.println();
        System.out.println("得到的稀疏數(shù)組為~~~~");
        for (int i = 0; i < sparseArr.length; i++) {
            for (int j = 0; j < sparseArr[i].length; j++) {
                System.out.printf("%d\t", sparseArr[i][j]);
            }
            System.out.println();
        }
        //將稀疏數(shù)組恢復(fù)為原始的二維數(shù)組
        //1.讀取稀疏數(shù)組的第一行得到二維數(shù)組的索引
        int chessArr2[][] = new int[sparseArr[0][0]][sparseArr[0][1]];
        //2.讀取后幾行(從稀疏數(shù)組的第二行開始)稀疏數(shù)組,并賦值給恢復(fù)的二維數(shù)組
        for (int i = 1; i < sparseArr.length; i++) {
            chessArr2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];

        }

        //恢復(fù)后的二維數(shù)組
        System.out.println();
        System.out.println("恢復(fù)后的二維數(shù)組~~");
        for (int i = 0; i < chessArr2.length; i++) {
            for (int j = 0; j < chessArr2[i].length; j++) {

                System.out.printf("%d\t", chessArr2[i][j]);

            }
            System.out.println();
        }

    }

}
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI