Java实现马踏棋盘游戏算法的代码怎么写
发表于:2024-10-03 作者:千家信息网编辑
千家信息网最后更新 2024年10月03日,这篇文章主要介绍"Java实现马踏棋盘游戏算法的代码怎么写",在日常操作中,相信很多人在Java实现马踏棋盘游戏算法的代码怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家
千家信息网最后更新 2024年10月03日Java实现马踏棋盘游戏算法的代码怎么写
这篇文章主要介绍"Java实现马踏棋盘游戏算法的代码怎么写",在日常操作中,相信很多人在Java实现马踏棋盘游戏算法的代码怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java实现马踏棋盘游戏算法的代码怎么写"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
大家可以把棋盘改小一些测试,8x8的确实很慢
import java.util.Arrays;/** * 骑士周游问题 * @author LM_Code * @create 2019-03-17-18:57 */public class KnightProblem { static final int SIZE = 8;//设置棋盘的行数和列数>=5时才有解 static final int[][] A = new int[SIZE][SIZE];//初始化棋盘,数组中所有值默认为0 static final int[] NEXT= new int[]{1, 2};//设置马的下一步,用空间为2的数组代替x,y坐标 public static void main(String[] args) { //判断此点是否能走完整个棋盘 if(method(NEXT, 1)){//能,则输出棋盘轨迹 for (int i = 0; i < A.length; i++) { System.out.println(Arrays.toString(A[i])); } }else{//不能,提示无解 System.out.println("此起点无解"); } } //传入下一步NEXT,和并表明下一步是第几步tag,返回此点是否能走完棋盘(有解) public static boolean method(int[] NEXT, int tag){ int[] current = new int[]{NEXT[0], NEXT[1]};//将当前步存入本次方法调用的局部变量 A[current[0]][current[1]] = tag;//把马跳到当前位置,并标记为是第几步 // 如果是最后一步,递归结束 if(tag == SIZE*SIZE){ return true; } //如果不是最后一步,下一步有8中可能 for (int i = 0; i < 8; i++) { //下一步的第i种情况是否可走 if(canGo(current, i)){//如果可以走,继续递归 //判断此时的下一步,是否能走完棋盘 if(method(NEXT, tag+1)){//能,返回true,递归结束 return true; } //此时的下一步不能走完棋盘,则继续寻找第i+1种情况的下一步是否有解 } //此时的下一步无解,则寻找第i+1种情况是否有解 } //如果当前步无法走完棋盘(无解) A[current[0]][current[1]] = 0;//回溯:撤销当前步,当前步赋值为0 return false;//返回false,回到上一步,表明此步无解 } //判断下一步是否能走,下一步有8中情况0-7,传入当前步arr,判断是否有第count种情况的下一步 public static boolean canGo(int[] arr,int count){ switch (count){ case 0 : if(arr[0]-1>=0&&arr[1]+2=0&&A[arr[0]+2][arr[1]-1]==0){ NEXT[0] = arr[0]+2; NEXT[1] = arr[1]-1; return true; } break; case 4 : if(arr[0]+1 =0&&A[arr[0]+1][arr[1]-2]==0){ NEXT[0] = arr[0]+1; NEXT[1] = arr[1]-2; return true; } break; case 5 : if(arr[0]-1>=0&&arr[1]-2>=0&&A[arr[0]-1][arr[1]-2]==0){ NEXT[0] = arr[0]-1; NEXT[1] = arr[1]-2; return true; } break; case 6 : if(arr[0]-2>=0&&arr[1]-1>=0&&A[arr[0]-2][arr[1]-1]==0){ NEXT[0] = arr[0]-2; NEXT[1] = arr[1]-1; return true; } break; case 7 : if(arr[0]-2>=0&&arr[1]+1 到此,关于"Java实现马踏棋盘游戏算法的代码怎么写"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
棋盘
代码
算法
学习
数组
方法
更多
问题
帮助
实用
接下来
位置
变量
坐标
局部
文章
标记
理论
知识
空间
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器主机一般装什么系统
联想文件管理服务器
有关网络安全标题
数据库后台运行命令
考研有没有专门的数据库专业
管理远程服务器软件
服务器安装到宝塔
已知研究生管理数据库
游戏服务器哪个性能好
浙江生产网络安全官网
在数据库中插入相同学号的学生
宁夏互联网医疗科技有限公司
乐聘网络技术有限公司招聘
网络安全信息培训内容
工商银行服务器密码怎么激活
安卓软件开发彭蓓
低延迟性价比香港服务器
web商城的软件开发文档
mcu软件开发公司
sp4补丁数据库版本
对日企软件开发
动态ip怎么做服务器
泰拉瑞亚纯生存服务器招人
我的世界租赁服务器如何加模组
尚义县网络安全培训班
dayz怎么开启单人服务器
实验五 数据库的安全性设计
土地整治质检数据库
低延迟性价比香港服务器
主体责任提升重点单位网络安全