zoukankan      html  css  js  c++  java
  • 二维数组与稀疏数组的相互转化

    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();
    }
    }
    }
  • 相关阅读:
    POJ
    POJ
    HDU——1027Ignatius and the Princess II(next_permutation函数)
    HDU——1106排序(istringstream的使用、STLvector练习)
    HDU——2054A==B?
    HDU——2087剪花布条
    HDU——2064汉诺塔III
    HDU——2068RPG的错排(错排公式)
    HDU——1789Doing Homework again(贪心)
    HDU——2067小兔的棋盘(卡特兰数&递推DP)
  • 原文地址:https://www.cnblogs.com/kukai/p/10992004.html
Copyright © 2011-2022 走看看