• 二维数组与稀疏数组的相互转化


    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 ", 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 %d %d ", 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 ", chess1Arr[i][j]);
    }
    System.out.println();
    }
    }
    }
  • 相关阅读:
    SpringMVC,3种不同的URL路由配置方法(这根本不是一个小问题)
    PHP在Windows下安装配置第一步
    跟我一起学extjs5(18--模块的新增、改动、删除操作)
    html image -- data:image/png;base64
    oc66--代理模式应用2
    oc65--协议应用1,接口.做数据类型限定
    oc64--协议2@protocol
    oc63--协议@protocol1
    oc62--block1
    oc61--block
  • 原文地址:https://www.cnblogs.com/kukai/p/10992004.html
Copyright © 2020-2023  润新知