美文网首页
稀疏数组——优化五子棋游戏的小技巧

稀疏数组——优化五子棋游戏的小技巧

作者: 李诗莹__三月 | 来源:发表于2020-03-29 23:22 被阅读0次

在五子棋游戏中,我们通常会使用一个矩形的二维数组来进行存储当前的游戏状态。这就会造成资源的浪费(绝大多数为空位),这就需要我们进行优化,下面是使用稀疏数组的方式,对五子棋游戏中的存储进行优化。

public class SparseArray {
    public static void main(String[] args) {
        //创建一个原始的二位数组11*11
        //0木有妻子,1,表示黑子 2,表示蓝子
        int chessArray[][]= new int[11][11];
        chessArray[1][2] = 1;
        chessArray[2][4] = 2;
        //输出原始的二维数组
        System.out.println("原始的二维数组为————————");
        for (int[] row:chessArray) {
            for (int data:row) {
                System.out.printf("%d\t",data);
            }
            System.out.println();
        }
        //将二维数组 转 稀疏数组的思想
        //1.先遍历二维数组 得到非0数据的个数
        int sum = 0;
        for (int i = 0;i<11;i++) {
            for (int j = 0;j<11;j++) {
                if(chessArray[i][j] != 0) {
                    sum++;
                }
            }
        }
        //创建对应的稀疏数组
        int sparseArray[][] = new int[sum+1][3];
        //给稀疏数组赋值
        sparseArray[0][0] = 11;
        sparseArray[0][1] = 11;
        sparseArray[0][2] = sum;
        //遍历二维数组,将非0的值存放到sparseArray中
        int count = 1 ;  
        for (int i = 0;i<11;i++) {
            for (int j = 0;j<11;j++) {
                if(chessArray[i][j] != 0) {
                    sparseArray[count][0] = i;
                    sparseArray[count][1] = j;
                    sparseArray[count][2] = chessArray[i][j];
                    count ++ ;
                }
            }
        }
        //输出稀疏数组的形式
        System.out.println("得到的稀疏数组为________________");
        for (int[] row:sparseArray) {
            for (int data : row) {
                System.out.printf("%d\t",data);
            }
            System.out.println();
        }
        System.out.println("恢复后的数组为______________________");
        int chess[][] = new int[sparseArray[0][0]][sparseArray[0][1]];
        int num = sparseArray[0][2];
        for (int i = 1; i<sparseArray.length; i++) {
            chess[sparseArray[i][0]][sparseArray[i][1]] =  sparseArray[i][2];
        }
        for (int[] row:chess) {
            for (int data:row) {
                System.out.printf("%d\t",data);
            }
            System.out.println();
        }
    }
}

相关文章

  • 稀疏数组——优化五子棋游戏的小技巧

    在五子棋游戏中,我们通常会使用一个矩形的二维数组来进行存储当前的游戏状态。这就会造成资源的浪费(绝大多数为空位),...

  • Java数据结构与算法分析 | 稀疏数组

    五子棋游戏的存取需求 在介绍稀疏数组前我们先来引入一个需求,下面是一个五子棋的棋盘(15 * 15),玩到中途时想...

  • 稀疏数组

    二维数组转成稀疏数,案例(五子棋),思路:1.获取二维数组中有效数据的个数.2.稀疏数组的列数为3,行数通过有效数...

  • 稀疏数组 & 环形队列

    一、稀疏数组 1、是什么?比如有一个 11 * 11 的五子棋盘,我们要用程序模拟,那肯定就是二维数组。然后用1表...

  • 中原焦点团队网络初14 坚持分享第914天

    十五子棋游戏:下棋游戏是教导孩子安全技巧的一个好工具,但概念过于抽象,可能难以难以解释。比如:小琪被带来接受治疗,...

  • 《儿童与青少年焦点解决短期心理咨询》读书打卡第912

    十五子棋游戏:下棋游戏是教导孩子安全技巧的一个好工具,但概念过于抽象,可能难以难以解释。比如:小琪被带来接受治疗,...

  • 数据结构与算法笔记(代码部分)

    笔记部分:https://www.jianshu.com/p/773b0850b1aa 1.五子棋中二维数组转稀疏...

  • 02 - 稀疏数组和队列

    一、稀疏数组 1. 应用场景和介绍 编写的五子棋程序中,有存盘退出和继续上盘的功能。 该二维数组的很多值都是默认值...

  • 稀疏数组

    1.稀疏数组 1.1创建一个指定长度的稀疏数组 new创建var a = new Array();>>(3)[em...

  • 稀疏数组

    当数组中的大部分元素为0,或者同一值时,可以使用稀疏数组来存储该数组,使用稀疏矩阵可以节约存储空间稀疏数组的处理方...

网友评论

      本文标题:稀疏数组——优化五子棋游戏的小技巧

      本文链接:https://www.haomeiwen.com/subject/qkwpuhtx.html