ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

二维数组和稀疏数组相互转换棋盘问题

2021-08-04 22:33:58  阅读:119  来源: 互联网

标签:arr int sum arrSparse length 二维 数组 棋盘


问题引起:棋盘问题

思路:

1.创建二维数组并进行赋值统计数据个数

public int twoDimensionalArray(){
    int sum = 0;
    arr[2][5] = 1;
    arr[3][6] = 2;
    arr[4][8] = 3;
    arr[5][3] = 4;
    arr[6][1] = 5;
    arr[7][0] = 6;
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {
            System.out.print(arr[i][j]+" ");
            int value = arr[i][j];
            if (value !=0) sum +=1;
        }
        System.out.println();
    }
    return sum;
}

2.二维数组转稀疏数组

思路分析:

1.统计二维数组的值的个数sum,根据sum创建稀疏数组 new int[sum+1][3]

2.获得二位数的行数row和列数column,连同sum保存到稀疏数组的第一行

3.遍历二维数组,获取二维数组的值(value)的行(row)和列(column)将其作为一个数组保存的稀疏数组的一行中

        arrSparse[k][0] = i;

        arrSparse[k][1] = j;

        arrSparse[k][2] = sparevalue;

4.遍历显示稀疏数组

public int[][] toSparseArray(){
    int sum = twoDimensionalArray();
    int row  = arr.length;
    int column = arr[0].length;
    int value = sum;
    int[][] arrSparse = new int[sum+1][3];
    arrSparse[0][0] = row;
    arrSparse[0][1] = column;
    arrSparse[0][2] = value;
    int k = 1;
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {
            int sparevalue = arr[i][j];
            if (sparevalue !=0){
                arrSparse[k][0] = i;
                arrSparse[k][1] = j;
                arrSparse[k][2] = sparevalue;
                k+=1;
            }
        }
    }
    showArray(arrSparse);

    return arrSparse;
}

3.稀疏数组转二维数组

思路分析:

1.获取稀疏数组的第0行数据,行 row = arr[0][0], 列column = arr[0][1]

2.根据行和列创建二维数组 new int[row][column]

3.遍历稀疏数组,将值赋值到对应的二维数组位置

        int a = arr[i][0];

        int b = arr[i][1];

        int c = arr[i][2];

        twoSparesArray[a][b] = c;

4.显示转换后的二位数组

public void toTwoSparseArray(int[][] arr){
    int row = arr[0][0];
    int column = arr[0][1];
    int sum = arr[0][2];
    int rowk = 1;
    int[][] twoSparesArray = new int[row][column];
    for (int i = 1; i < arr.length; i++) {
        int a = arr[i][0];
        int b = arr[i][1];
        int c = arr[i][2];
        twoSparesArray[a][b] = c;
        rowk += 1;
    }
    showArray(twoSparesArray);
}
/*
* 遍历数组
* */
public void showArray(int[][] arr){
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {
            System.out.print(arr[i][j]+" ");
        }
        System.out.println();
    }
}

标签:arr,int,sum,arrSparse,length,二维,数组,棋盘
来源: https://blog.csdn.net/qq_36273886/article/details/119394453

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有