稀疏数组——优化五子棋游戏的小技巧
在五子棋游戏中,我们通常会使用一个矩形的二维数组来进行存储当前的游戏状态。这就会造成资源的浪费(绝大多数为空位),这就需要我们进行优化,下面是使用稀疏数组的方式,对五子棋游戏中的存储进行优化。
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 代码性能优化_Java代码性能优化的几个小技巧
Java代码性能优化的几个小技巧 时间:2017-08-07 来源:华清远见JAVA学院 代码优化是程序员必须懂得一门学问,所以不管是程序员还是准程序员,养成良好的代码优化习惯都是必须要养成的 ...
- 细说接口性能优化的11个小技巧
前言 接口性能优化对于从事后端开发的同学来说,肯定再熟悉不过了,因为它是一个跟开发语言无关的公共问题. 该问题说简单也简单,说复杂也复杂. 有时候,只需加个索引就能解决问题. 有时候,需要做代码重构. ...
- 详细的聊聊接口性能优化的11个小技巧 不收藏对不起我
前言 接口性能优化对于从事后端开发的同学来说,肯定再熟悉不过了,因为它是一个跟开发语言无关的公共问题. 该问题说简单也简单,说复杂也复杂. 有时候,只需加个索引就能解决问题. 有时候,需要做代码重构. ...
- Silverlight 游戏开发小技巧:动感小菜单2
Silverlight 游戏开发小技巧:动感小菜单2 动感小菜单其实是想模仿Apple的菜单按钮设计制作,但是画虎不成反类犬,看起来有点别扭,昨天各位园友提了这方面的建议,感觉太硬如果加入动画可能更好 ...
- 一起谈.NET技术,Silverlight 游戏开发小技巧:动感小菜单
网页应用受限于自身的浏览器范畴,不能把华丽效果完全展示,正是因为如此,在网页上诞生了无数绚丽的设计,虽然动感程度和桌面应用无法比拟,但是在UI上却下足了功夫,用户体验可以说无以伦比,比如说小小的菜单, ...
- Silverlight 游戏开发小技巧:轨迹跟随效果
Silverlight 游戏开发小技巧:轨迹跟随效果 我们通常在游戏中有各种各样的粒子效果,其中有一种就是跟随鼠标发生的轨迹动画,在鼠标经过的地方会产生一些特效,这种方式我们在粒子当中经常使用,本篇使 ...
- Silverlight 游戏开发小技巧:实现街霸4的选人界面
Silverlight 游戏开发小技巧:实现街霸4的选人界面 上一篇只是一个引子,用来说明Projection的基本操作,游戏研发都是用这些小的基本功能慢慢组合出来,其实这一篇仍然是Projectio ...
- Silverlight 游戏开发小技巧:扇形排列元素
Silverlight 游戏开发小技巧:扇形排列元素 斗地主风靡了大江南北,在春晚都做免费性推广,棋牌游戏平台几乎将其作为标配,但是牌类游戏总是一成不变的样子--横向排列,如果扇形排列应该更加符合真实 ...
- 聊聊接口性能优化的11个小技巧
点击下方"IT牧场",选择"设为星标" 前言 接口性能优化对于从事后端开发的同学来说,肯定再熟悉不过了,因为它是一个跟开发语言无关的公共问题. 该问题说简单也简 ...
最新文章
- 音乐处理---H_music.php
- python 静态变量 静态方法 简介
- java导出 elsx 文件,如何获取java导出的excel文件,发送请求导出excle文件
- servlet下载文件(注意文件名字必须是英文)
- oracle 不认exp指令,更改oracle字符集导致exp命令出错(解决方法)
- Swagger2 生成API文档时泛型总是显示不出来的问题
- 企业系统软件你知道哪些?
- Qt添加qrc文件_添加pri文件_添加预编译头文件
- stm32f103c8t6视频教程
- 产品经理--用户研究
- php企业后台管理系统模板,企业版PHP后台管理模板【清爽型】修改版~
- 企查查爬虫循环获取信息
- 2018吉大计算机学院复试线,吉林大学2018年考研复试分数线【已公布】
- MapReduce实现分组排序
- (C语言)求幂级数展开的部分和
- Logistic Regression 逻辑回归数学原理、python代码实现、实际应用
- html页面添加动态动画小人,使用CSS3各个属性实现小人的动画_html/css_WEB-ITnose
- 6个月轻松拿下GRE考试:备考复习计划分享
- 大数据、分布式、中台、云原生数据库架构设计与实践 | DAMS 2020
- 基于AM335x裸机开发例程使用手册
热门文章
- leetcode第21天格雷编码
- iOS开发之自定义键盘(数字,字母类型等随意切换)
- Python:实现ternary search三元搜索算法(附完整源码)
- php的qq邮箱正则表达式语法_正则表达式综合应用:qq邮箱提取
- 互联网晚报 | 周杰伦起诉网易不正当竞争案庭审结束;特斯拉中国工厂普通工人月薪1万块;SpaceX“星舰”发射计划推迟...
- 听歌用什么降噪耳机好?骑行抗风噪最好的蓝牙耳机
- 我爬取了CSDN总榜TOP10博主的2万多篇文章,看看他们为什么这么火
- java生成xml文件head,生成XML文件 - Glucose的个人空间 - OSCHINA - 中文开源技术交流社区...
- 文案怎么写,才会更有画面感,告诉你2个方法(三)
- 使用NGUI模仿制作“切水果”