当前位置 博文首页 > weixin_30787531的博客:二维数组与稀疏数组的相互转化

    weixin_30787531的博客:二维数组与稀疏数组的相互转化

    作者:[db:作者] 时间:2021-09-12 18:06

    package struct;

    public class SparseArr {
    public static void main(String[] args) {
    int chess[][] = new int[11][11];
    //0代表空白,1代表黑子,2代表蓝子
    chess[1][2] = 1;
    chess[2][3] = 2;
    int sum = 0;
    //获取有效值个数
    for (int[] rows : chess) {
    for (int data : rows) {
    System.out.printf("%d\t", data);
    if (data != 0) {
    sum++;
    }
    }
    System.out.println();
    }
    //创建稀疏数组
    int[][] sparseArr = new int[sum + 1][3];
    //给稀疏数组赋值
    sparseArr[0][0] = 11;//棋盘的行数
    sparseArr[0][1] = 11;//棋盘的列数
    sparseArr[0][2] = sum;//棋盘上的棋子个数
    //二维数组的长度为行数
    int count = 1;
    for (int i = 0; i < chess.length; i++) {
    for (int j = 0; j < chess[0].length; j++) {
    if (chess[i][j] != 0) {
    sparseArr[count][0] = i;
    sparseArr[count][1] = j;
    sparseArr[count][2] = chess[i][j];
    count++;
    }
    }
    }
    //输出稀疏数组
    for (int i = 0; i < sparseArr.length; i++) {
    System.out.printf("%d\t%d\t%d\t\n", sparseArr[i][0], sparseArr[i][1], sparseArr[i][2]);
    }
    //还原二维数组
    int[][] chess1Arr = new int[sparseArr[0][0]][sparseArr[0][1]];
    //给二维数组赋值
    for (int i = 1; i < sparseArr.length; i++) {
    for (int j = 0; j < sparseArr[0].length; j++) {
    chess1Arr[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];
    }
    }
    //输出二维数组
    for (int i = 0; i < chess1Arr.length; i++) {
    for (int j = 0; j < chess1Arr[0].length; j++) {
    System.out.printf("%d\t", chess1Arr[i][j]);
    }
    System.out.println();
    }
    }
    }
    cs