五子棋算法之稀疏数组算法(内存压缩优化处理)

五子棋智能算法-博弈树算法思想详解(一) 学习这个算法之前必会链表 关于链表看这两篇博文 https://blog.youkuaiyun.com/viafcccy/article/details/84502334 https://blog.youkuaiyun.com/viafcccy/article/details/85041942 在五子棋下棋中 我们最容易想到的算法就是对于棋局的推演 从而找到一种最佳的情况去使棋局向这个方向发展 为了简单思考... 阅读详情
   **平时我们玩五子棋游戏,都会遇到一个存档问题,如果做到优化压缩内存存储呢?
   下面将分享一个通过稀疏数组进行压缩处理的优化处理方案
   首先介绍一下稀疏数组:
     1)当一个数组中大部分元素都为0时、或者为同一个数值时 可以用稀疏数组来存储该数组
     2)处理方法:
             1. 记录数组一共几行几列,有多少个不同的值
             2 .把具有不同值的元素的列行记录在一个小规模的数组中,从而缩小程序的规模**

一.先创建一个二维的11*11的棋盘

package com.lwh.sqarse;

public class Sqarse {
    public static void main(String[] args) {
   //创建一个二维数组11*11
        //1代表黑色棋子 2代表白色棋子
       int chessArr[][] = new int[11][11];
       chessArr[1][2]=1;
       chessArr[2][3]=2;
       //打印原始数组
        for (int i = 0; i <chessArr.length ; i++) {
            for (int j = 0; j <chessArr.length ; j++) {
                System.out.print(chessArr[i][j]+" ");
            }
            System.out.println();
        }
        //遍历找出有效数据sum
        int sum=0;
        for (int i = 0; i <chessArr.length ; i++) {
            for (int j = 0; j <chessArr.length ; j++) {
                if (chessArr[i][j]!=0)
                {
                    sum++;
                }
            }
        }
        System.out.println(sum);

二. 创建一个稀疏数组

  //创建一个稀疏数组
       int chessArr2[][] = new int[sum+1][3];
       chessArr2[0][0]=11;
       chessArr2[0][1]=11;
       chessArr2[0][2]=sum;
       //给稀疏数组赋值
        int count=0;
        for (int i = 0; i <chessArr.length ; i++) {
            for (int j = 0; j <chessArr.length ; j++) {
                if (chessArr[i][j]!=0){
                    count++;
                    chessArr2[count][0]=i;
                    chessArr2[count][1]=j;
                    chessArr2[count][2]=chessArr[i][j];
                }
            }
        }
        System.out.println("稀疏数组如下:");
        //循环输出稀疏数组
        for (int i = 0; i <chessArr2.length ; i++) {

                System.out.print(chessArr2[i][0]+"   " +chessArr2[i][1]+"  "+chessArr2[i][2]);
                        System.out.println();
        }

三 .稀疏数组转二维数组

        //稀疏数组转二维数组
        System.out.println("稀疏数组转二维数组如下");
        int chessArr3[][] = new int[chessArr2[0][0]][chessArr2[0][1]];
        int c=0;
        for (int i = 0; i <sum; i++) {
             c++;
            chessArr3[chessArr2[c][0]][chessArr2[c][1]]=chessArr2[c][2];


        }
//        chessArr3[chessArr2[1][0]][chessArr2[1][1]]=chessArr2[1][2];
//        chessArr3[chessArr2[2][0]][chessArr2[2][1]]=chessArr2[2][2];

        System.out.println(chessArr3.length);
        for (int i = 0; i <chessArr3.length ; i++) {
            for (int j = 0; j <chessArr3.length ; j++) {
                System.out.print(chessArr3[i][j]+ " ");
            }
            System.out.println();
        }

    }

操作后就把一个11乘11的二维数组压缩成了一个3乘3的数组大大减少了内存消耗
tips:遇到大量重复多余的数据时 我们可以考录把数据转化成另外一种格式存储来节省内存空间

五子棋AI算法和开局定式(直指13式)破解 我对算法的思路是:黑棋的进攻点就是白棋的防守点,反之,白棋的进攻点就是黑棋的防守点。若抓到冲四活三,嵌五活三,双活三等棋势的叠加进攻点,权分叠加计权,就能绝杀对方。必杀局有双活三,双冲四,冲四加活三,嵌五加活三,嵌五加冲四,这些必杀局就是必胜法宝。黑棋先手要取胜,从第7手开始和9手11手要保持先手,争外势抢先做活三进攻,之后要保先手,做活三冲四,进攻是决胜的法宝。上图100分为双活三或活三嵌四的棋势,若150分则有三个棋势叠加,250分以上是冲四活三,冲四嵌四,嵌五活三,嵌五嵌四等各类棋势。 阅读详情

相关推荐

五子棋算法设计

昨天看了一个五子棋的算法,这个算法其实也并不复杂。主要包括赢法数组、每一种赢法的保存数组、每一个未投子的得分数组。 1.赢法数组: 记录可能的五个子相连的赢法种类,是一个三维数组。如a[i][j][k]。这样要对赢法数组进行初始化。假设棋盘大小为15*15,定义一个整数count来进行赢法计数。那么循环i,j,k(0 注:赢法数组是不针对人或计算机的,而是对获胜种类的一种置位标记。 2.每

yutianxin123的专栏 3651

五子棋简易AI算法

Java实现简易五子棋人机算法

quarkx的博客 8142

flash五子棋算法详解

flash五子棋算法详解,对你制作flash游戏开发有莫大的好处,特别是制作五子棋啦

简单五子棋算法——初级篇

五子棋博弈算法探究(1)前言 前言 最近对五子棋产生了一点兴趣,想来研究研究,我原本觉得简简单单的五子棋,其实还是有很多学问的。 五子是中国古老的棋类之一,是老少咸宜的娱乐项目, ...

jjwwwww的博客 2万+

五子棋AI算法

五子棋AI算法,采用Java实现,支持与电脑对战,自行选择难度和先手。 对应博文: https://blog.youkuaiyun.com/feifei316631241/article/details/82874681

基于αβ剪枝的优化的五子棋算法

基于αβ剪枝的优化的五子棋算法,用c++实现,可以三步,在优化中~

数据结构之稀疏数组(sparseArray)

1、what is sparseArray? 2、why sparseArray? 3、when to use sparseArray? 4、how to use sparseArray? 5、how to use sparseArray more efficiently?

键盘敲烂的博客 243

ExoPlayer硬解码实战:如何绕过系统默认软解码提升播放性能(附完整代码)

本文深入剖析了ExoPlayer默认解码器选择机制的不确定性,并提供了通过自定义MediaCodecSelector强制启用硬解码的完整实战方案。该方案能有效解决因软解码导致的播放卡顿、黑屏花屏及高功耗问题,显著提升Android应用在各种设备上的视频播放性能与稳定性。

weixin_29295541的博客 456

算法 稀疏数组 数组优化 数组压缩 二维数组转稀疏数组 算法合集(二)

稀疏数组第一行存储原始数组的行信息,列信息,非0值或不同值得个数,进行保存。e. 稀疏数组转换为原始数组(原以为直接两层循环,再判断稀疏数组值是否在此循环内,进行使用,需要多层循环,思路不对。2. 稀疏数组(sparse array) :当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。c. 稀疏数组第一行存储原始数组信息,总共11行11列有2条有效数据,存入稀疏数组。c. 循环原始数组,将黑棋,蓝棋目前的位置信息,存入稀疏数组。1. 五子棋游戏,玩家对战一半,停战。

求是 434

AI for Science:GNN预测分子性质全流程详解与工业实践

从分子表示到工业落地,一文掌握图神经网络在药物研发与材料设计中的核心实战近年来,的浪潮正深刻变革着传统科研范式。在药物研发与材料设计领域,作为核心环节,已从传统的实验试错转向基于图神经网络(GNN)的智能计算。本文将深入解析GNN预测分子性质的,涵盖数据准备、模型设计、训练优化到工业部署,并揭秘前沿技术与实战案例。

datacanvas2426的博客 1674

无耳科技 Solon v3.0.8 发布,Java 企业级应用开发框架

Solon 是新一代,Java 企业级应用开发框架。是杭州无耳科技有限公司的“根级”开源项目(最近“杭州六小龙”很火啊,我们也是杭州的哦)。从零开始构建(No Spring、No Java-EE、No Servlet),有灵活的接口规范与开放生态。采用对商用友好的 Apache 2.0 开源协议。

向往自由的少年!(我是一个少年!!!) 1700

稀疏数组模拟五子棋棋盘(原始数组和稀疏数组的互相转换)

五子棋: 0 0 0 0 1 0 0 0 0 2 1 0 1:黑子 2:黑子 0:空白 占大部分,可利用稀疏数组压缩 稀疏数组的处理方法: 1)记录数组一共有几行几列,有多少个不同的值 2)把具有不同元素的行列记录在一个小规模的数组 中,从而缩小程序的规模(稀疏数组)。 0 0 2 0 1 0 3 0 6 0 0 0 0 0 4 9...

m0_37751465的博客 542

Mac M1安装Hive

如果你确定装过mysql,但是执行上述命令后,发现不存在mysql命令,那说明你的系统环境没有配置。出现一段空白,接着出现Initialization script completed。关闭hiveServer2时,执行如下命令查看hive进程;执行上面命令后,若有结果输出,则证明配置完成了。如果出现mac权限问题,解决方法参考。就可以见到hive的web界面了。若出现路径,则存在mysql。配置好后保存,使配置文件生效。用户名hive,密码hive。用户名通过如下命令查看。通过如下命令杀死该进程。

总结复盘,才能不迷失自己! 2388

稀疏数组

稀疏数组(Sparse Array) 应用场景 假设我们正在开发一个五子棋程序,有存盘退出和复盘的功能。 在五子棋游戏中,我们现在要开发存盘退出功能,那么我们首先需要记录棋盘上黑白子的位置,棋盘其实可以使用二维数组来表示,那么我们可以使用二维数组来保存黑白子的位置坐标,如下图所示的五子棋游戏中 我们可以使用二维数组记录棋盘,如下所示: 我们其实没有必要保存整个棋盘的位置,而是只保存有黑白子的位置...

Geek_ymv的专栏 315

sec_uid

webcast_uid转sec_uid,webcast_uid转uid,webcast_uid转dy号

m0_56967679的博客 4421

Qt/C++编写自定义控件49-飞机仪表盘

一、前言 飞行仪表是测定和表示飞机数据的工具,飞机中必不可少的一部分,飞行员根据飞行仪表表示的数据才能正确地做出判断。一般飞机仪表包括高度表+空速表+垂直速率表+姿态仪+航向指示表+转弯协调表。 这次要绘制的是其中的姿势仪,显示飞机相对于地平线的姿态,看姿态仪,飞行员能判断飞机姿态为偏左偏右,及偏上和偏下。姿态仪作用原理为一高度旋转的陀螺,不论飞机的姿态如何变化,此陀螺的定轴性在空间保持相同,因而...

Qt/C++视频监控/推流/物联网/大屏系统/自定义控件/UI定制/输入法 7025

稀疏数组介绍以及案例

稀疏数组一、定义二、使用场景三、存储结构四、案例 一、定义 数组中非零元素的个数远远小于数组元素的总数,并且非零元素的分布没有规律,则称该数组为稀疏数组(sparse array) 比较基本的定义是数组中的大多数元素为零,并且可以利用零元素节约大量存储、运算和程序运行时间 二、使用场景 对于一个用二维数组,如果假设存储每个数组元素需要 L 个字节,那么存储整个数组需要 mnL 个字节。但是,这些...

cheng87995211的博客 359

JavaSwing_4.2: JDialog、JOptionPane(对话框)

JDialog,对话框。使用 JDialog 类可以创建自定义有的对话框,或者调用 JOptionPane 中的多个静态方法快速创建各种标准的对话框。JOptionPane是 JavaSwing 内部已实现好的,以静态方法的形式提供调用,能够快速方便的弹出要求用户提供值或向其发出通知的标准对话框。

谢TS的博客 7万+

数据结构与算法:稀疏sparsearray数组

前言 本文主要讲解稀疏sparsearray数组 数据结构与算法文章列表 数据结构与算法文章列表: 点击此处跳转查看 目录 (一)需求 编写的五子棋程序中,有存盘退出和续上盘的功能 分析问题:因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据,所以使用稀疏数组来解决这个问题。 (二)基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法是: (1)记录数组一共有几行几列,有多少个不同的值 (稀疏数组一共就3列) (2)把具有不

分享计算机基础,android,C/C++,音视频等内容 712

[低代码 + AI] 明道云与 Dify 的三种融合实践方式详解

融合方式技术路径优点局限或注意事项UI 嵌入iframe 表单嵌入快速集成、用户体验一致无法自定义交互逻辑明道云调用 DifyAPI 请求节点工作流自动化、逻辑灵活有 timeout 限制、需优化 promptDify 调用明道云插件或 API 调用节点可查询实际业务数据、增强 AI 智能需理解明道云 API 结构、权限设置复杂明道云与 Dify 的结合为低代码平台注入了智能动力。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 1187

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java 数据结构与算法——稀疏数组

java 数据结构与算法——稀疏数组 稀疏矩阵 基本介绍: 稀疏矩阵第一列为原始二维数组 行数 列数 非0数的个数 接下来n列为原始二维数组非0数的所在的 行数 列数 值 将下面五子棋的棋盘转化为二维数组,再将二维数组转化为稀疏数组,最后将稀疏数组恢复为二维数组 public class SparseArray { public static void main(String[] args) { // 创建原始的二位数数组11*11 // 0:表示没有棋子,1:表示黑子,2:表示蓝子

weixin_43825740的博客 279

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【数据结构与算法】数据结构介绍与稀疏数组相关操作

算法是程序的灵魂,优秀的程序可以在海量数据计算时,依然保持高速计算。一般来讲程序会使用了内存计算框架 ( 比如Spark ) 和缓存技术 ( 比如Redis等 ) 来优化程序,再深入的思考一下,这些计算框架和缓存技术, 它的核心功能是哪个部分呢?拿实际工作经历来说, 在Unix下开发服务器程序,功能是要支持上千万人同时在线, 在上线前,做内测,一切OK。可上线后,服务器就支撑不住了,公司的CTO对代码进行优化,再次上线,坚如磐石。就能感受到程序是有灵魂的,就是算法。

weixin_43923463的博客 843

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

一篇文章搞定Java稀疏数组!

数组有很多形式,可以用来做很多事情,像是最简单的储存数据,还可以储存二叉树,储存图…… 什么是稀疏数组? 其实这个和储存图的一种形式差不多。 首先来看一下稀疏数组的应用场景: 假如要写一个五子棋小程序,用1来表示白子,用2表示蓝子,用0来表示空。 显然我们要定义一个二维数组来储存这些数据,那么这样需要用大量的内存,空间复杂度太大,要遍历时,浪费的空间复杂度是O(n^2),那么我们要优化这么一个程序,显然要缩小空间复杂度,那么我们就需要用到稀疏数组。 下面我们引入这个数组的介绍: 当一个数组中大部分元素为0,

z135733的博客 213

数据结构基础学习(二维数组和稀疏数组转换)

这数据结构学习day01五子棋游戏功能概述具体思路稀疏数组转换思路如何插入一段漂亮的代码片 五子棋游戏 使用二维数组模拟一个五子棋游戏 功能概述 功能: 1.存盘 2.读档 五子棋盘使用二维数组来存放 1.存盘:为了节省空间将二维数组转化为稀疏数组将稀疏数组存放在磁盘中 2.读档:将稀疏数组先转化为二维数组在表示出来 具体思路 1.使用二维数组模拟一个棋盘 2.棋盘存储压缩使用的是将二维数组转化为一个稀疏数组存储减少存储空间 稀疏数组 数组下标0开始 处理方式: 1.第一行记录一共几行几列和多少个不同的值

weixin_43932518的博客 345

用java代码对稀疏数组压缩和还原

稀疏数组 1.作用:在很多二维数组中有许多的空间是被浪费的比如(模拟一个10*10的五子棋棋盘只有黑棋和白棋下的点是有效点)更多的是没有被使用的无效点。所以我们使用稀疏数组只存储有效点的位置,而忽略无效点。进而节省空间。 2.稀疏数组的特点:稀疏数组只有三列。有若干行。 int xishu[][] = new int[行][列](列 = 3 行 = 为有效数据的数量加一) 稀疏数组的第一行是存储原本数组的数据 xishu[0][0] = 原本数组的行数; xishu[0][1] = 原本数组的列数; xi

qq_45411328的博客 317

Java基础算法之---稀疏数组

Java基础算法之—稀疏数组 数组的用处很多,比如下棋,我们知道一般下棋是在一个平面的方格内进行,无论是象棋,围棋,五子棋,一般都是在方格内将棋子进行任意位置的放置,如下 这样一个棋盘我们将他存在计算机中,我们一般能想到的是将它存在二维数组中,如下 将之存进二维数组中,我们可以编写代码如下 /** * @author loltoulan * @massage 稀疏数组的创建 */ pub...

LOL_toulan的博客 359
上一篇: 递归算法小球迷宫问题
下一篇: 逆波兰表达式(后缀表达式)计算器的实现总结
来来爱编程
博客等级 码龄7年 375粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值