如何使用C++实现马踏棋盘
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍如何使用C++实现马踏棋盘,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!马踏棋盘,用1枚马走遍棋盘。我用一个二维数组记录模拟的整个路径,x为列,y为行,以顺时针
千家信息网最后更新 2025年11月07日如何使用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安全错误
数据库的锁怎样保障安全
软件开发服务属于什么税目
西固区网络安全周
excel找到某个数据库
oracle数据库常见错误
2020网络安全心得体会
兆日科技是网络安全股吗
微信小程序读写数据库
音乐数据库结构
软件开发公司实操
初心沈阳网络技术有限公司
做小程序是否也得买服务器
pc软件开发前景
河北省廊坊市固安县牛驼镇服务器
以sql语句操作数据库
青岛跨境互联网科技有限公司
银川专业软件开发价格
福建安全云空间工具服务器
英国网络安全专业排行
软件开发及测试岗
制作表格中的数据库在哪里
服务器主机可以家用吗
炫舞的华南之约服务器
迅雷快传网络技术有限公司
郑州统计数据库
修改微信号服务器繁忙什么意思
科技互联网 诗词
生产数据库归档要开启吗
北京巅峰互动网络技术
页面运行和数据库有关系吗
西安软件开发驻场价格表