毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

写程序求解骑士巡游问题

更新时间:2014-3-22:  来源:毕业论文

编写程序求解骑士巡游问题:在n行n列的棋盘上(如n=5),假设一位骑士(按象棋中“马走日”的行走法)从初始坐标位置(x1,y1)出发,要遍访(巡游)棋盘中的每一个位置一次。请编一个程序,为骑士求解巡游“路线图”(或告诉骑士,从某位置出发时,无法遍访整个棋盘 — 问题无解)。
    当n=5时,意味着要在5行5列的棋盘的25个“点”处,按骑士行走规则,依次将1至25这25个“棋子”(数码)分别摆放到棋盘上(摆满25个位置则成功,否则失败问题无解)。
    例如,当n=5且初始坐标位置定为(1,1) — 即最左上角的那个点时,如下是一种巡游“路线图”。程序执行后的输出结果为:
(x1,y1)? => (1=>5, 1=>5) : 1 1
   1   6  15  10  21
  14   9  20   5  16
  19   2   7  22  11
   8  13  24  17   4
  25  18   3  12  23
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
程序执行的结果:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 
 //////////////////////////////
1.2概要设计:
(1)“棋盘”可用二维数组B表示。
 (2)编制一个具有如下原型的递归函数solve,用于完成任务:从(i,j)点出发,做第k至第n*n(即n的平方)次的移动 — 将k直到n的平方这些数码按规则分别摆放到棋盘即数组B中,若成功则通过引用参数ok返回true,否则返回false。
  void solve(int i, int j, int k, bool& ok);
(3)编制主函数,让用户输入作为巡游起点的初始坐标位置(x1,y1),在该处摆放“棋子”(数码)1,而后进行调用“solve(x1, y1, 2, ok);”来完成所求任务。
    欲处理的初始问题为:从某点(x1,y1)出发,按所给行走规则,作24次移动,遍访棋盘中没被访问过的各点(或发现无路可走)。
    可分解化简为如下两个子问题(正是形成递归函数的基础):
① 由点(x1,y1)出发,按所给行走规则作1次移动到达(g,h)(或发现无路可走);
② 从(g,h)点出发,按所给行走规则,作23次移动,遍访棋盘中没被访问过的各点(或发现无路可走)。
solve函数具体实现时,若由(i,j)点出发已“无路可走”,则将引用参数ok置为false而递归出口;否则,先“迈一步”到达(g,h)点,而后再进行递归调用:solve(g, h, k+1, ok);以实现从新点(g,h)出发,将k+1直到25这些“棋子”(数码)分别摆放到棋盘上,若成功则通过引用参数ok返回true(否则返回false)。

本文来自六.维,论-文·网原文请找腾讯752018766
///////////////////////////////
1.3  程序流程图(如下图
 
///////////////////////////////
1.4  详细设计与编码:
见上传程序。

///////////////////////////////
1.5  调试分析:
棋盘”用二维数组B表示, 编制一个递归函数solve,用于完成任务。编制主函数,让用户输入作为巡游起点的初始坐标位置(x1,y1),在该处摆放“棋子”(数码)1,而后进行调用“solve(x1, y1, 2, ok);”来完成所求任务,在编写的过程中,这个递归调用不是很好,经常出现错误,我想和我对这方面不是很扎实的理论有关系。
///////////////////////////////
1.6  用户使用说明:
用户根据在屏幕上显示的的提示输入用户想要的数字,便可由程序实现对该数的计算,完成题目的要求,最后输出所有可能的路线的数目。
///////////////////////////////
1.7  设计心得:
做到了提高题后发现真的是变的难了很多,很多地方都不是能够一次就能把问题解决的,所以这就要求我在课下的时间里要查阅大量的资料,扩充自己的知识面,这样才能在接下来的编程的时间的里,面对层出不穷的新问题才有能力去解决它。2587

写程序求解骑士巡游问题下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©lwfree.cn 六维论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。