首页 > 其他分享 >稀疏数组(五子棋)详解

稀疏数组(五子棋)详解

时间:2023-08-14 19:00:48浏览次数:40  
标签:int array2 五子棋 System 详解 数组 println out

稀疏数组的介绍(五子棋)

  • 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。

  • 稀疏数组的处理方式是:

    1. 记录数组一共有几行列,有多少个不同

    2. 把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模

  • ------->

package array;

public class ArrayDemo09 {
   public static void main(String[] args) {
       //1.创建一个二维数组11*11 0:没有棋子, 1.黑棋 2.白棋
       int[][] array1 = new int[11][11];
       array1[1][2] = 1;
       array1[2][3] = 2;
       //输出的原始数组
       System.out.println("输出的原始数组");
       for (int[] ints : array1) {
           for (int anInt : ints) {
               System.out.print(anInt + "\t");
          }
           System.out.println();
      }
       System.out.println("========================");

       //转换为稀疏数组保存
       //获取有效值的个数
       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("=======================");
           System.out.println("还原");
           //1.读取稀疏数组
           int[][] array3 = new int[array2[0][0]][array2[0][1]];

           //2.给其中的元素还原它的值
           for (int j = 1; j < array2.length; j++) {
               array3[array2[i][0]][array2[i][1]] = array2[i][2];

          }

           //3.打印
           System.out.println("输出还原的数组");
           for (int[] ints : array3) {
               for (int anInt : ints) {
                   System.out.print(anInt+"\t");
              }
               System.out.println();

          }
      }
  }
}
 

标签:int,array2,五子棋,System,详解,数组,println,out
From: https://www.cnblogs.com/yzk5/p/17629476.html

相关文章

  • jmeter详解(2)-GUI图形页面
    菜单栏 对应中文 运行里面有和远程执行相关的 选项包括外观语言、里面有日志查看的功能,SSL管理与https协议的测试相关 工具里面有函数助手及报告相关的东西,以及其他 快捷工具栏 从左到右依次为:新建、模版、打开、保存、剪切、粘贴、全部展开、全部折叠、切......
  • Dubbo服务暴露的过程详解
    推荐阅读AI文本OCR识别最佳实践AIGamma一键生成PPT工具直达链接玩转cloudStudio在线编码神器玩转GPUAI绘画、AI讲话、翻译,GPU点亮AI想象空间「java、python面试题」来自UC网盘app分享,打开手机app,额外获得1T空间https://drive.uc.cn/s/2aeb6c2dcedd4https://drive.......
  • Apipost接口自动化控制器使用详解
    测试人员在编写测试用例以及实际测试过程中,经常会遇到两个棘手的问题:•稍微复杂一些的自动化测试逻辑,往往需要手动写代码才能实现,难以实现和维护•测试用例编写完成后,需要手动执行,难以接入自动化体系这里,小编在Apipost自动化测试中还原了用户在电商平台购物实例,并利用这个实例来......
  • 一文详解Apipost数据模型功能
    在Apipost数据模型中用户可以预先创建多个数据模型,并在API设计过程中重复利用这些模型来构建API创建数据模型在左侧导航点击「数据模型」-「新建数据模型」在右侧工作台配置数据模型参数 引入数据模型在API设计预定义响应期望下点击引用数据模型,并选择需要导入的数据模型......
  • 学习笔记 - Java 数组
    数组的概述数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。数组是有序排列的,且数组属于引用数据类型,但数组中的元素既可以是基本数据类型,又可以是引用数据类型。数组的存储是在内存中开启一片连续的空间,长度一旦......
  • vue.use()详解
    原文链接:https://blog.csdn.net/sunyctf/article/details/127706967官网解释:前言:相信很多人在用Vue使用别人的组件时,会在在main.js中用到Vue.use(xx)。例如:Vue.use(VueRouter)、Vue.use(MintUI)、Vue.use(ElementUI)。但是用axios时,就不需要用Vue.use(axios),就......
  • Python学习 -- 常用函数与实例详解
    在Python编程中,数据转换是一项关键任务,它允许我们在不同数据类型之间自由流动,从而提高代码的灵活性和效率。本篇博客将深入探讨常用的数据转换函数,并通过实际案例为你展示如何巧妙地在不同数据类型之间转换。数据类型转换函数Python提供了多种数据类型转换函数,以下是其中几个常用的......
  • jmeter详解(1)-安装目录
    JMeter官网:https://jmeter.apache.org/GitHub:https://github.com/apache/jmeter用户文档(英文):https://jmeter.apache.org/usermanual/index.html ApacheJMeter可用于测试静态和动态资源、Web动态应用程序的性能。它可以用来模拟一台服务器、一组服务器、网络或对象上的重......
  • P3374 【模板】树状数组
    \(P3374\)【模板】树状数组1#include<bits/stdc++.h>usingnamespacestd;constintN=5*1e5+10;intn,m;inta[N];//树状数组模板inttr[N];intlowbit(intx){returnx&-x;}voidadd(intx,intc){for(inti=x;i<N;i+=lo......
  • Python PIL Image.crop()详解+裁剪四元组定位的小技巧
    0Image.crop详解image.crop是Python中用于裁剪图片的函数。在使用该函数前,我们需要先导入PIL库,即PythonImageLibrary。fromPILimportImage#打开图片img=Image.open('example.jpg')#图片的裁剪区域(区域左上角的坐标为(100,100),右下角的坐标为(300,300))crop_are......