马步遍历问题与骑士巡游问题的回溯算法.docx

上传人:scccc 文档编号:12127035 上传时间:2021-12-02 格式:DOCX 页数:3 大小:13.15KB
返回 下载 相关 举报
马步遍历问题与骑士巡游问题的回溯算法.docx_第1页
第1页 / 共3页
马步遍历问题与骑士巡游问题的回溯算法.docx_第2页
第2页 / 共3页
马步遍历问题与骑士巡游问题的回溯算法.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《马步遍历问题与骑士巡游问题的回溯算法.docx》由会员分享,可在线阅读,更多相关《马步遍历问题与骑士巡游问题的回溯算法.docx(3页珍藏版)》请在三一文库上搜索。

1、马步遍历问题与骑士巡游问题的回溯算法【摘要】马步遍历问题与骑士巡游(knight's tour)问题是指在有8 ´ 8方格的国际象棋棋盘上进行奇异的骑士“L型”(L-shaped)移动的问题。而骑士巡游问题实际是带有约束条件的马步遍历问题,因此在用程序求解的时候可以一并求解。本文给出求解这一问题的回溯算法之C+语言程序。论文关键词:骑士巡游,回溯算法,C+语言一般地说,我们用如下方法表示一个解:即把数字0,1,63放入棋盘中的方格来表示到达这些方格的顺序。解决骑士巡游问题更具创意的方法之一是由J. C. Warnsdorff在1823年提出的。其规则是:骑士总是移向具有最少出

2、口且没有到达过的方格之一。由于骑士巡游问题实际是带有约束条件的马步遍历问题,因此在用程序求解的时候可以一起求解。程序算法依然是回溯法,和皇后问题有相似之处。马步遍历和骑士巡游问题的复杂度较高,求出一个解相对容易,但要求出所有的解是要花一定时间的。一、回溯算法的实现1为解决这个问题,我们把棋盘的横坐标定为i,纵坐标定为j。i和j的取值范围是从到SIZE。当某个骑士占了位置(i,j)时,其在这个位置上可以向8个方向以“L型”移动,它们分别是:方向1:i+2,j+1;方向2:i+1,j+2;方向3:i-1,j+2;方向4:i-2,j+1;方向5:i-2,j-1;方向6:i-1,j-2;方向7:i+1

3、,j+2;方向8:i+2,j-1。2棋盘以二维数组表示,其下标最大值8,将骑士的每一步按1,2,3 64填入数组相应单元。其过程如下:for(int i=0;i<8;i+)for(int j=0;j<8;j+)trajKTij=0;作者简介 王力强(1965- ),江苏省常州市武进区人,陕西省城市经济学校财务科长,工程师。for(int e=0; e<=curPointSub; e+)trajKTmoveTraje.Location.x_posmoveTraje.Location.y_pos = e+1;for(i=0;i<8;i+)for(int j=0;j<8;j+)cout< 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1