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

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();}}
}

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

  1. java 代码性能优化_Java代码性能优化的几个小技巧

    Java代码性能优化的几个小技巧 时间:2017-08-07     来源:华清远见JAVA学院 代码优化是程序员必须懂得一门学问,所以不管是程序员还是准程序员,养成良好的代码优化习惯都是必须要养成的 ...

  2. 细说接口性能优化的11个小技巧

    前言 接口性能优化对于从事后端开发的同学来说,肯定再熟悉不过了,因为它是一个跟开发语言无关的公共问题. 该问题说简单也简单,说复杂也复杂. 有时候,只需加个索引就能解决问题. 有时候,需要做代码重构. ...

  3. 详细的聊聊接口性能优化的11个小技巧 不收藏对不起我

    前言 接口性能优化对于从事后端开发的同学来说,肯定再熟悉不过了,因为它是一个跟开发语言无关的公共问题. 该问题说简单也简单,说复杂也复杂. 有时候,只需加个索引就能解决问题. 有时候,需要做代码重构. ...

  4. Silverlight 游戏开发小技巧:动感小菜单2

    Silverlight 游戏开发小技巧:动感小菜单2 动感小菜单其实是想模仿Apple的菜单按钮设计制作,但是画虎不成反类犬,看起来有点别扭,昨天各位园友提了这方面的建议,感觉太硬如果加入动画可能更好 ...

  5. 一起谈.NET技术,Silverlight 游戏开发小技巧:动感小菜单

    网页应用受限于自身的浏览器范畴,不能把华丽效果完全展示,正是因为如此,在网页上诞生了无数绚丽的设计,虽然动感程度和桌面应用无法比拟,但是在UI上却下足了功夫,用户体验可以说无以伦比,比如说小小的菜单, ...

  6. Silverlight 游戏开发小技巧:轨迹跟随效果

    Silverlight 游戏开发小技巧:轨迹跟随效果 我们通常在游戏中有各种各样的粒子效果,其中有一种就是跟随鼠标发生的轨迹动画,在鼠标经过的地方会产生一些特效,这种方式我们在粒子当中经常使用,本篇使 ...

  7. Silverlight 游戏开发小技巧:实现街霸4的选人界面

    Silverlight 游戏开发小技巧:实现街霸4的选人界面 上一篇只是一个引子,用来说明Projection的基本操作,游戏研发都是用这些小的基本功能慢慢组合出来,其实这一篇仍然是Projectio ...

  8. Silverlight 游戏开发小技巧:扇形排列元素

    Silverlight 游戏开发小技巧:扇形排列元素 斗地主风靡了大江南北,在春晚都做免费性推广,棋牌游戏平台几乎将其作为标配,但是牌类游戏总是一成不变的样子--横向排列,如果扇形排列应该更加符合真实 ...

  9. 聊聊接口性能优化的11个小技巧

    点击下方"IT牧场",选择"设为星标" 前言 接口性能优化对于从事后端开发的同学来说,肯定再熟悉不过了,因为它是一个跟开发语言无关的公共问题. 该问题说简单也简 ...

最新文章

  1. 音乐处理---H_music.php
  2. python 静态变量 静态方法 简介
  3. java导出 elsx 文件,如何获取java导出的excel文件,发送请求导出excle文件
  4. servlet下载文件(注意文件名字必须是英文)
  5. oracle 不认exp指令,更改oracle字符集导致exp命令出错(解决方法)
  6. Swagger2 生成API文档时泛型总是显示不出来的问题
  7. 企业系统软件你知道哪些?
  8. Qt添加qrc文件_添加pri文件_添加预编译头文件
  9. stm32f103c8t6视频教程
  10. 产品经理--用户研究
  11. php企业后台管理系统模板,企业版PHP后台管理模板【清爽型】修改版~
  12. 企查查爬虫循环获取信息
  13. 2018吉大计算机学院复试线,吉林大学2018年考研复试分数线【已公布】
  14. MapReduce实现分组排序
  15. (C语言)求幂级数展开的部分和
  16. Logistic Regression 逻辑回归数学原理、python代码实现、实际应用
  17. html页面添加动态动画小人,使用CSS3各个属性实现小人的动画_html/css_WEB-ITnose
  18. 6个月轻松拿下GRE考试:备考复习计划分享
  19. 大数据、分布式、中台、云原生数据库架构设计与实践 | DAMS 2020
  20. 基于AM335x裸机开发例程使用手册

热门文章

  1. leetcode第21天格雷编码
  2. iOS开发之自定义键盘(数字,字母类型等随意切换)
  3. Python:实现ternary search三元搜索算法(附完整源码)
  4. php的qq邮箱正则表达式语法_正则表达式综合应用:qq邮箱提取
  5. 互联网晚报 | 周杰伦起诉网易不正当竞争案庭审结束;特斯拉中国工厂普通工人月薪1万块;SpaceX“星舰”发射计划推迟...
  6. 听歌用什么降噪耳机好?骑行抗风噪最好的蓝牙耳机
  7. 我爬取了CSDN总榜TOP10博主的2万多篇文章,看看他们为什么这么火
  8. java生成xml文件head,生成XML文件 - Glucose的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. 文案怎么写,才会更有画面感,告诉你2个方法(三)
  10. 使用NGUI模仿制作“切水果”