如何使用C++实现马踏棋盘
发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章主要介绍如何使用C++实现马踏棋盘,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!马踏棋盘,用1枚马走遍棋盘。我用一个二维数组记录模拟的整个路径,x为列,y为行,以顺时针
千家信息网最后更新 2025年01月16日如何使用C++实现马踏棋盘
这篇文章主要介绍如何使用C++实现马踏棋盘,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
马踏棋盘,用1枚马走遍棋盘。我用一个二维数组记录模拟的整个路径,x为列,y为行,以顺时针的方式寻找下一格,算法比较简单,就通过递归和循环回溯即可,就是如果是8*8的数组,最坏可能执行8^(x*y)次,耗时长到怀疑人生。
#include#define X 5#define Y 5 void ShowResult();using namespace std; int chess[Y][X]={ 0};int counter=0; int Next(int* x,int* y,int where){ switch(where){ case 0: if(*x+1 =0&&chess[*y-2][*x+1]==0){ *x+=1; *y-=2; return 1; } break; case 1: if(*x+2 =0&&chess[*y-1][*x+2]==0){ *x+=2; *y-=1; return 1; } break; case 2: if(*x+2 =0&&*y+2 =0&&*y+1 =0&&*y-1>=0&&chess[*y-1][*x-2]==0){ *x-=2; *y-=1; return 1; } break; case 7: if(*x-1>=0&&*y-2>=0&&chess[*y-2][*x-1]==0){ *x-=1; *y-=2; return 1; } break; } return 0;} int Explore(int x,int y){ int x1=x; int y1=y; int flag; int where=0; counter++; chess[y][x]=counter; if(counter==X*Y){ return 1; } flag=Next(&x1,&y1,where); while(flag==0&&where<7){ where++; flag=Next(&x1,&y1,where); } while(flag){ if(Explore(x1,y1)==1){ return 1; } else{ x1=x; y1=y; where++; flag=Next(&x1,&y1,where); while(flag==0&&where<7){ where++; flag=Next(&x1,&y1,where); } } } if(flag==0){ chess[y][x]=0; counter--; } return 0;} void ShowResult(){ for(int i=0;i 以上是"如何使用C++实现马踏棋盘"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
棋盘
C++
内容
数组
篇文章
人生
价值
兴趣
小伙
小伙伴
就是
方式
时针
时长
更多
知识
算法
行业
资讯
资讯频道
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
描述数据库模型语言
网络安全感悟1500字
全闪存服务器安全吗
直连登录linux服务器
个人做软件开发如何开票
多种数据库连接工具
x86服务器工资
国内软件开发平台排名
吉化网络技术有限公司
校园网络安全宣传方案
数据库修改的命令是
360安全云盘停止服务器
软件开发2022年工作计划模板
delphrpc服务器不可用
计算机网络技术学VF吗
海安智能网络技术质量保证
网络安全法中的数据是指什么数据
小学校园网络安全教育材料
软件开发人员需求量
国内bim软件开发商
经济技术开发区泽传网络技术
原神国际服加速找不到服务器
深圳市唐人街网络技术有限公司
北京软件开发合作微信群
网络安全知识的案例
海安智能网络技术质量保证
无线网络安全通知
高端软件开发人员
乡村小学网络安全自查报告
0基础学习软件开发多久