有n行m列矩阵,每个位置的元素取值(1~9),同一行或者同一列中如果有三个以及三个以上的数字相同时,将改相同的数字全部消除(即改为0)
**注意:**同一个数字可能同时在某一行和某一列被消除。


解题思路:先将行中满足条件的数字消除(在新数组中消除,不改变原数组的数据。),然后将列中满足条件的数字消除(同样是在新数组中消除),最后在合并经过行消除和列消除得到的两个数组。

/**消除行中满足条件的数字*/
public static int[][] TD(int[][] sourceArray) {//数组行的长度;int hang = sourceArray.length;//数组列的长度;int lie = sourceArray[0].length;//定义一个新数组;为了不改变原数组的数据;int[][] arr = new int[hang][lie];for (int i = 0; i < hang; i++) {for (int j = 0; j < lie; j++) {arr[i][j] = sourceArray[i][j];}}//行消除:某一行中有三个及三个以上相邻,相同的数字,就将满足该条件的数字修改为0。for (int i = 0; i < hang; i++) {//注意:索引不要越界。for (int j = 1; j < lie-1; j++) {if (arr[i][j-1]==arr[i][j]&&arr[i][j+1]==arr[i][j]) {arr[i][j-1]=0;arr[i][j+1]=0;int count = 2;while((j+count<lie)&&arr[i][j+count]==arr[i][j]) {arr[i][j+count]=0;count++;}arr[i][j]=0;}}}return arr;}
/**消除列中满足条件的数字*/
public static int[][] MD(int[][] sourceArray) {int hang = sourceArray.length;int lie = sourceArray[0].length;int[][] arr = new int[hang][lie];for (int i = 0; i < hang; i++) {for (int j = 0; j < lie; j++) {arr[i][j] = sourceArray[i][j];}}for (int j = 0; j < lie; j++) {for (int i = 1; i < hang-1; i++) {if (arr[i-1][j]==arr[i][j]&&arr[i+1][j]==arr[i][j]) {arr[i-1][j]=0;arr[i+1][j]=0;int count = 2;while(i+count<hang&&arr[i][j]==arr[i+count][j]) {arr[i+count][j]=0;count++;}arr[i][j]=0;}}}return arr;}
/**将上面两次消除得到的两个数组合并*/
public static int[][] copyTDAndMD(int[][] sourceArray,int[][] td,int[][] md) {for (int i = 0; i < td.length; i++) {for (int j = 0; j < md[0].length; j++) {//如果两个数组(行消除和列消除得到的数组)中同一位置的元素相等,就将该元素添加到原数组中,不相等就将0添加到原数组中。sourceArray[i][j] = (td[i][j]==md[i][j])?td[i][j]:0;}}return sourceArray;}

希望对你有所帮助。
“--------------------------------------------------------------”
如有不足,还望指正。

Java代码实现消消乐游戏中的消除功能相关推荐

  1. 消消乐游戏中,一种巧妙的消除条件判别算法

    目录 前言 所要解决的问题 问题分析 解决办法 总结 前言 本文介绍了一种消消乐游戏的核心规则算法,我已经填了N个标签戳,相信你应该不会因为王者荣耀而搜到这篇文章.我们这里只介绍消消乐中关于三个相同颜 ...

  2. 成语消消乐java代码_成语消消看-4399成语消消看-成语消消看答案大全

    成语消消看65 文过饰非.无疾而终.大浪淘沙.因地制宜.飞龙在天.人山人海 微信成语消消看65关答案 惺惺相惜,飞龙在天,大浪淘沙,分崩离析,文过饰非 因地制宜,无疾而终,婀娜妩媚,人山人海,极乐世界 ...

  3. java代码转置sql数据_SQL Server中的数据科学:数据分析和转换–使用SQL透视和转置

    java代码转置sql数据 In data science, understanding and preparing data is critical, such as the use of the ...

  4. java 代码智能提示,如何在Eclipse中设置Java、JavaScript、HTML智能代码提示

    使用eclipse自带的插件,无需另外安装插件,具体步骤如下 1.打开eclipse→Windows→Preferences→Java→Editor→Content Assist 修改Auto Act ...

  5. avg是java关键字_浅谈AVG游戏中的脚本

    最近因为笔记本数据丢失,翻网盘的时候找到了大学时候写的基于XNA的2D游戏引擎的代码,和为这个引擎写的使用示例. 其中比较大点的示例就是一个ACT游戏,一个AVG游戏和一个A*寻径算法. 因为当时的A ...

  6. 【数据结构与算法】->算法-> A* 搜索算法->如何实现游戏中的寻路功能?

    A* 搜索算法 Ⅰ 前言 Ⅱ 算法解析 Ⅲ 如何实现游戏寻路问题 Ⅳ 总结 Ⅰ 前言 你可能玩过魔兽世界,仙剑奇侠和英雄联盟这类 MMRPG 游戏,在这些游戏中,有一个非常重要的功能,就是人物角色自动 ...

  7. 如何在游戏中实现穿墙功能

    在游戏中,很多地方都有障碍物,那么怎么才能越过障碍物快速进行行走呢? 我们可以逆向分析它的障碍物判断函数,然后修改他的返回值或者直接jmp跳过检测就可以实现障碍物的穿越了. 下面就来说说具体的思路: ...

  8. 贪吃蛇游戏java代码_Java实现贪吃蛇游戏

    最近JAVA和JSwing上手练习了一下贪吃蛇,供大家参考,具体内容如下 欢迎交流和加入新的内容 用到了JSwing,下面是一些具体的思路 实现 * 蛇: 采用单链表记录首尾,整个蛇被分为lattic ...

  9. 用简单Java代码尝试在控制台写游戏(附源码)

    尝试写了一个在Java控制台运行的代码游戏,由于写这个的时候,博主还没学到可视化界面,也没有学到面向对象,甚至没有集合,运用的全是之前C语言的语法,因此应该很容易看懂吧.末尾附上源码. 以下是效果展示 ...

最新文章

  1. 台湾大学林教授libsvm在matlab的安装
  2. 第1章、蓄势待发准备篇
  3. 变频器服务器电路板维修,变频器电路板维修技巧
  4. Web框架——Flask系列之abort函数与自定义异常处理(十三)
  5. Bootstrap 幻灯片效果
  6. 状态栏和navigationbar 关联上,结构体总是通过被复制的方式在代码中传递,因此请不要使用引用计数。...
  7. cocos2dx-lua 笔记 方向控制 v2
  8. CentOS 7.6网络配置
  9. 图像识别的工作原理是什么?商业上如何使用它?
  10. 【金九银十】Java微服务面试题,看到你就是赚到
  11. 基于OPENCV的OCR身份证号识别技术
  12. 江苏大学毕业论文答辩PPT模板
  13. php源码安装图文教程_安装PHP的教程及说明(图文详解)
  14. 阅读软件怎么添加书源_「看书+听书」两款神器软件,我已深深的为之折服了...
  15. c语言学习周报(2020.11.21-11.28)
  16. php 获取手机设备的ID,获取苹果设备的UDID
  17. 公众号怎么设置滑动文字_这种微信公众号里面滑动是怎么操作的?
  18. CMS的全称是什么?全名是?
  19. 公司想注册电子邮箱账号,需要注意些什么?
  20. 做好抖音的核心就这两点

热门文章

  1. 几款值得推荐的PC端应用
  2. Android跳转淘宝商品详情页代码
  3. 知识点滴 - 关于汉语学习的网络资源
  4. 一键换肤丨酷雷曼VR全景系统皮肤高燃登场
  5. 04-ET框架的事件系统
  6. PLC实验:水塔水位控制
  7. HP服务器数据恢复通用办法【案例】
  8. 达闼科技赵开勇:基于自学习的机器人决策系统
  9. ECS_FML——非负定矩阵
  10. 百度网盘在偷窥我,但我没有证据