稀疏数组之棋盘案例。java

稀疏数组之棋盘案例

首先我们先新建一个Java项目,然后我们直接先创建棋盘,设置棋子的位置。

 public static void main(String[] args) {
        //创建一个二维数组11*11  0:没有棋子。 1:黑棋 2:白棋
        int[][] array1=new int[11][11];
        array1[1][2]=1;
        array1[2][3]=2;
}

创建棋盘后然后我们先输出棋盘看一下。在此之前我们先创建一个遍历方法方便快速调用画出棋盘。

//遍历画出棋盘。
    public static void Printfs(int[][] array1) {
        for (int[] ints:array1)
        {
            for (int anInt:ints)
            {
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
    }

现在我们调用方法输出(这里的代码放到主函数下)。

  System.out.println("输出原始的数:");
        Printfs(array1);

要转换成稀疏数组,我们要先知道稀疏数组是怎么回事。下面右边的这个二维数组就是稀疏数组。由n+1行和三列组成。主要记录左边这张表的数据和数据相对应的位置。

 

下面我们要创建一个稀疏数组,要先知道左边这张表内的数据有多少个。

//获取有效值的个数
        int sum=0;
        for (int i = 0; i < 11; i++) {
            for (int j = 0; j <11 ; j++) {
                if (array1[i][j]!=0)
                {
                    sum++;
                }
            }
        }
        System.out.println("有效值的个数:"+sum);

现在我们可以创建一个二维数组来存储这个稀疏数据。

//转换为稀疏数组来保存。
        int[][] array2=new int[sum+1][3];
        array2[0][0]=11;
        array2[0][1]=11;
        array2[0][2]=sum;
        int count=0;
        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j <array1[i].length ; j++) {
                if(array1[i][j]!=0) {
                    count++;
                    array2[count][0] = i;
                    array2[count][1] = j;
                    array2[count][2] = array1[i][j];
                }

            }
        }

然后再将这个存稀疏数据的二维数组遍历出来就好了。

 System.out.println("稀疏数组");
        for (int i = 0; i < array2.length; i++) {
            System.out.println(array2[i][0]+"\t"+array2[i][1]+"\t"+array2[i][2]+"\t");
        }
        System.out.println("=============");

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

下面是全部代码:

 1 package com;
 2 
 3 public class xishu {
 4 
 5     public static void main(String[] args) {
 6         //创建一个二维数组11*11  0:没有棋子。 1:黑棋 2:白棋
 7         int[][] array1=new int[11][11];
 8         array1[1][2]=1;
 9         array1[2][3]=2;
10         //输出原始的数组;
11         System.out.println("输出原始的数:");
12         Printfs(array1);
13 
14         //获取有效值的个数
15         int sum=0;
16         for (int i = 0; i < 11; i++) {
17             for (int j = 0; j <11 ; j++) {
18                 if (array1[i][j]!=0)
19                 {
20                     sum++;
21                 }
22             }
23         }
24         System.out.println("有效值的个数:"+sum);
25         //转换为稀疏数组来保存。
26         int[][] array2=new int[sum+1][3];
27         array2[0][0]=11;
28         array2[0][1]=11;
29         array2[0][2]=sum;
30         int count=0;
31         for (int i = 0; i < array1.length; i++) {
32             for (int j = 0; j <array1[i].length ; j++) {
33                 if(array1[i][j]!=0) {
34                     count++;
35                     array2[count][0] = i;
36                     array2[count][1] = j;
37                     array2[count][2] = array1[i][j];
38                 }
39 
40             }
41         }
42 
43         System.out.println("稀疏数组");
44         for (int i = 0; i < array2.length; i++) {
45             System.out.println(array2[i][0]+"\t"+array2[i][1]+"\t"+array2[i][2]+"\t");
46         }
47         System.out.println("=============");
48 
49     }
50 //遍历画出棋盘。
51     public static void Printfs(int[][] array1) {
52         for (int[] ints:array1)
53         {
54             for (int anInt:ints)
55             {
56                 System.out.print(anInt+"\t");
57             }
58             System.out.println();
59         }
60     }
61 }

 

 

posted @ 2020-09-05 16:43  御花园  阅读(167)  评论(0)    收藏  举报