zoukankan      html  css  js  c++  java
  • 稀疏数组

    package com.dai.sparsearray;
    
    public class SparseArray {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            //创建原始的二维数组 11*11
            //0:表示没有旗子 1:黑 2:蓝色
            int chessArr1[][] = new int[11][11];
            chessArr1[1][2] = 1;
            chessArr1[2][3] = 2;
            chessArr1[4][5] = 1;
            System.out.println("原始的二维数组");
            for(int[] row : chessArr1) {
                for(int data : row) {
                    System.out.printf("%d	",data);
                }
                System.out.println();
            }
            
            //遍历二维数组,得到非0数据的个数
            int sum = 0;
            for(int i=0; i<11 ; i++) {
                for(int j=0;j<11;j++) {
                    if(chessArr1[i][j] != 0) {
                        sum++;
                    }
                }
            }
            //创建对应的稀疏数组
            int sparseArr[][] = new int[sum+1][3];
            //给稀疏数组赋值
            sparseArr[0][0] = 11;
            sparseArr[0][1] = 11;
            sparseArr[0][2] = sum;
            //遍历二维数组,将非0的值存放到稀疏数组中
            int count = 0; //用于记录是第几个非0数据
            for(int i = 0; i<11; i++) {
                for (int j=0;j<11;j++) {
                    if(chessArr1[i][j] !=0) {
                        count++;
                        sparseArr[count][0] = i;
                        sparseArr[count][1] = j;
                        sparseArr[count][2] = chessArr1[i][j];
                    }
                }
            }
            //输出稀疏数组
            System.out.println();
            System.out.println("输出稀疏数组");
            for(int i =0; i<sparseArr.length;i++) {
                System.out.printf("%d	%d	%d	
    ",sparseArr[i][0],sparseArr[i][1],sparseArr[i][2]);
            }
            //将稀疏数组恢复成原始的二维数组
            //先读取稀疏数组第一行,创建原始二维数组
            int chessArr2[][] = new int[sparseArr[0][0]][sparseArr[0][1]];
            
            //遍历稀疏数组
            for(int i=1;i<sparseArr.length; i++) {
                chessArr2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];
            }
            
            //输出恢复后的二维数组
            System.out.println("输出恢复后的二维数组");
            for(int[] row:chessArr2) {
                for (int data:row) {
                    System.out.printf("%d	", data);
                }
                System.out.println();
            }
                            
        }
    
    }
  • 相关阅读:
    UVA 10564 Paths through the Hourglass DP
    HDU 3397 Sequence operation 线段树 成段更新 区间合并
    HDU 3308 LCIS 线段树 单点更新+区间合并
    POJ 3667 Hotel 线段树 区间合并
    UVALive 3942 Remember the Word Tire+DP
    POJ 1703 Find them, Catch them
    UVA 1366 Martian Mining DP
    UVA 1456 Cellular Network 贪心+DP
    UVA 11573 Ocean Currents
    【ACM】hdu_zs1_1003_放大的X _201307271557
  • 原文地址:https://www.cnblogs.com/shengtudai/p/14308482.html
Copyright © 2011-2022 走看看