当前位置: 首页 > news >正文

西宁网站设计企业中国建设银行网站主要功能

西宁网站设计企业,中国建设银行网站主要功能,重庆住房和城乡建设部网站的打印准考证,合肥高端网站建设1. 说明 骑士旅游#xff08;Knights tour#xff09;在十八世纪初倍受数学家与拼图迷的注意#xff0c;它什么时候被提出已不可考#xff0c;骑士的走法为西洋棋的走法#xff0c;骑士可以由任一个位置出发#xff0c;它要如何走完所有的位置#xff1f; 2. 解法 骑士旅…1. 说明 骑士旅游Knights tour在十八世纪初倍受数学家与拼图迷的注意它什么时候被提出已不可考骑士的走法为西洋棋的走法骑士可以由任一个位置出发它要如何走完所有的位置 2. 解法 骑士旅游Knights Tour问题是一个经典的图算法问题目标是在一个 N×N 的棋盘上让西洋棋的骑士从任意一个位置出发访问每个棋盘格子一次且仅一次。此问题可以通过递归回溯法解决也可以优化为 Warnsdorff’s Rule 的贪心算法。 2.1 骑士的移动规则 骑士的移动方式为 “L” 形 横向移动两格然后纵向移动一格。或者纵向移动两格然后横向移动一格。 每个位置最多有 8 种可能的移动方向具体视棋盘边界而定。 2.2 骑士旅游的解法 2.2.1 递归回溯法 递归回溯法尝试从起始位置依次探索每个可能的移动方向如果某条路径可以完成骑士旅游则返回解否则回溯尝试其他路径。 2.2.2 C 语言实现 #include stdio.h #include stdbool.h#define N 8// 棋盘的 8 个可能移动方向 int rowMove[8] {2, 1, -1, -2, -2, -1, 1, 2}; int colMove[8] {1, 2, 2, 1, -1, -2, -2, -1};// 打印棋盘 void printSolution(int board[N][N]) {for (int i 0; i N; i) {for (int j 0; j N; j) {printf(%2d , board[i][j]);}printf(\n);} }// 检查骑士是否可以移动到 (x, y) bool isSafe(int x, int y, int board[N][N]) {return (x 0 x N y 0 y N board[x][y] -1); }// 递归回溯求解骑士旅游问题 bool solveKnightTourUtil(int x, int y, int moveCount, int board[N][N]) {if (moveCount N * N) {return true; // 所有格子都已访问}for (int i 0; i 8; i) {int nextX x rowMove[i];int nextY y colMove[i];if (isSafe(nextX, nextY, board)) {board[nextX][nextY] moveCount; // 标记为已访问if (solveKnightTourUtil(nextX, nextY, moveCount 1, board)) {return true; // 如果找到解直接返回}board[nextX][nextY] -1; // 回溯}}return false; // 无法找到解 }// 骑士旅游问题的主函数 bool solveKnightTour() {int board[N][N];// 初始化棋盘为 -1未访问for (int i 0; i N; i) {for (int j 0; j N; j) {board[i][j] -1;}}// 骑士从棋盘的左上角 (0, 0) 出发board[0][0] 0;// 如果找到解打印棋盘否则返回无解if (solveKnightTourUtil(0, 0, 1, board)) {printSolution(board);return true;} else {printf(No solution exists\n);return false;} }int main() {solveKnightTour();return 0; } 2.2.3 代码解释 移动方向数组 rowMove 和 colMove 数组定义了骑士的 8 种移动方式。 isSafe 函数 判断骑士是否可以移动到新的位置 (x, y)确保其在棋盘范围内且未访问过。 递归函数 solveKnightTourUtil 从当前棋盘位置 (x, y) 出发尝试所有可能的 8 个方向。如果移动后所有棋盘格都被访问则返回解。否则回溯撤销当前移动。 solveKnightTour 函数 初始化棋盘将骑士放置在起始位置 (0, 0)。调用递归回溯函数寻找解。 打印棋盘 解的结果以棋盘的形式打印其中数字表示骑士访问每个格子的顺序。 2.2.4 样例输出 对于 8×8 的棋盘可能的输出如下路径可能因算法不同而不同 0 59 38 33 30 17 8 63 37 34 31 60 9 62 29 16 58 1 36 39 32 27 18 7 35 48 41 26 61 10 15 28 42 57 2 49 40 23 6 19 47 50 45 54 25 20 11 14 56 43 52 3 22 13 24 5 51 46 55 44 53 4 21 12 2.2.5 关键点 回溯 尝试所有可能的路径如果失败则撤销上一步的操作。 时间复杂度 理论上递归回溯法的时间复杂度为 O(8^n)其中 n 是棋盘的格子数最坏情况下。实际运行时间受剪枝和优化策略影响。 Warnsdorff’s Rule优化方法 骑士优先选择移动选项最少的路径从而降低回溯的频率极大地优化求解效率。
http://www.hkea.cn/news/14289714/

相关文章:

  • 百度小程序制作网站html网页制作代码范例
  • 电影网站推广乐从做网站
  • python 做网站模块杭州网站制作报价
  • 佛山做外贸网站代理商网络推广运营推广
  • it做私活的网站公司网站开发用什么软件
  • 公司的网站建设费应该怎么入账织梦优美文章阅读网站源码
  • 网站模板助手出售自己的网站
  • 做网站是上海市建设工程材料网站
  • 三灶网站建设自适应网站导航怎么做
  • 电商网站运营流程从哪个网站设置宽带主机
  • 自我做t恤的网站网站外链建设大揭秘
  • 东莞网站推广团队wordpress 模板函数
  • 成都高端网站设计做网站竞价还需要推广公司
  • 高端模板网站建设价格苏州专业网站建设设计公司排名
  • 网站规划 评价网站建设公司如何发展
  • 郑州网站开发顾问网站的 联系我们怎么做
  • 网页就是一个网站的首页php sqlite 做网站
  • 性价比最高网站建设价格wordpress主题两边空白区域怎么添加图案
  • 军人运动会官方网站建设目标黄骅港属于哪个市
  • 怎样建网站买东西网站开发技术规范要求
  • logo123罗湖区seo排名
  • 巴中建设网站织梦网站如何做伪静态
  • 精通网站建设工资多少钱广州房地产最新消息
  • 商城网站建设课设wordpress 没有权限
  • 网页设计设计网站建设wordpress搬家后文章
  • 设计一个个人网站的基本步骤百度2019旧版本下载
  • 提供网站建设服务平台上海服饰网站建设
  • 网站用哪个软件做网站开发的私活
  • 爱站网综合查询辽宁省建设局网站
  • 做网站做论坛赚钱吗邮箱网站架构