1、在实践中培养独立分析问题和解决问题的作风和能力。设计环境1. PC兼容机 2Windows 2000/XP操作系统3TC集成开发环境或其他C语言开发环境课程设计要求和任务要求:1熟练掌握递归与分治策略,能够利用递归与分治解决实际问题;2使用文件进行存储和管理。程序启动时可从文件中读取信息,或从键盘输入信息;运行过程中也可对文件进行存取;退出前可选择将部分信息保存到文件中;3不同的功能使用不同的函数实现(模块化),对每个函数的功能和调用接口要注释清楚。对程序其它部分也进行必要的注释。4对系统进行功能模块分析、画出总流程图和各模块流程图;5用户界面要求使用方便、简洁明了、美观大方、格式统一。所有功
2、能可以反复使用,最好使用菜单;6通过命令行相应选项能直接进入某个相应菜单选项的功能模块;7所有程序需调试通过。任务:完成马的Hamilton周游路线问题.设计内容包括:1确定能对给定的偶数m,n6,且|m-n|2,编程计算mn的国际象棋棋盘上马的一条Hamilton周游路线;2程序能够演示一条Hamilton周游路线的周游过程等。课程设计工作进度计划序 号起止日期工 作 内 容1下发任务书,分组,选定课题,查阅相关资料2总体设计,划分模块3编制源程序4上机调试,修改、完善系统5程序检查6撰写说明书课程设计报告课程名称: 软件专题训练 设计题目: 马的Hamilton周游路线问题 院 系: 电子
3、信息工程学院 专 业: 计算机科学与技术 班 级: 学生姓名: 学 号:起止日期: 2011年5月28日 2011年6月3日 指导教师: 第一章 需求分析1.1 课程设计题目8*8的国际象棋棋盘上的一只马,恰好走过除起点外的其他63个位置各一次,最后回到起点。这条路线称为马的一条Hamilton周游路线。对于给定的m*n的国际象棋棋盘,m和n均为大于5的偶数,且|m-n|=2,式设计一个算法找出马的一条Hamilton周游路线。1.2 课程设计任务及要求1.3 程序运行环境及开发工具一、程序运行环境1. PC兼容机2Windows 2000/XP操作系统二、开发工具Visual C+6.0第二
4、章 概要设计2.1 程序流程图 概要流程图2.2算法设计原理在n*n的国际象棋棋盘上面的一只马,可按8个不同方向移动。定义n*n的国际象棋棋盘上的妈的部数图为G=(V,E)。棋盘上的每个方格对应于图G中的一个顶点,V=(i,j)|0=i,jn,从一个定点到另一个马步可跳达的顶点之间有一条边E=(u,v),(s,t)|u-s|,|v-t|=1,2第三章详细设计函数一:int q(int x, int y) 该函数主要说的的功能是判断马是否可以跳到下一步,如果下一步位置跃出棋盘或是已经走过,返回0值。函数二:int w(int x, int y) 该函数主要求的是权值,用来判断马的下一步的下一步可
5、以有几个方向可以跳。并返回权值的最后数值。函数三:void r(int a, int b, int n) 权值排序函数是用来找到权值最小的那一步,找到并以其为马要走的下一步。函数四:void Out() 对结果进行输出。通过文件函数将运行结果以txt格式输出。函数五:void b(int t, int x, int y) 该函数为本程序的主要函数,其功能是实现马的跳跃,当马有一个位置到另一个位置后通过自身的递归调用,寻找下一个要到达的位置。当无法进行下一步时通过递归回溯法后退到可执行位置为至。第四章 系统调试4.1调试结果第五章 课程设计总结与体会通过将近一个星期的学习和探索,终于按老师的要求
6、完成了各项任务,本次课程设计是我跟进一步了解了算法设计的重要性学好算法设计对今后的课程学习有着很大的帮助,但是在整个课程设计阶段,自己还有很多不足的地方,一旦遇到很难解决的问题,陷入困境后,很难自己独立的解决问题,常常需要老师的引导。在今后的学习工作过程中还要加强独立解决问题的能力。作为开放式设计型的实验,不仅仅可以激发学生独立思考和创新的意识,让学生感受、理解知识产生和发展的过程,培养学生的科学精神和创新思维习惯,重视培养学生收集信息的能力,获取新知识的能力, 更可以提高学生实际动手能力。附录 马的Hamilton周游路线问题程序#include stdlib.hconst int M=6;
7、const int N=6;int chessMN = 0;int a82 = -2, 1, -1, 2, 1, 2, 2, 1, 2, -1, 1, -2, -1, -2, -2, -1;char s20; if (x = 0 & x y N & chessxy = 0) return 1; return 0;/求权值 int c = 0; for (int i = 0; i 8; +i) if (q(x + ai0, y + ai1) c+; return c;/权值排序 if (n 0; -j) if (aj aj - 1) int temp = aj - 1; aj - 1 = aj;
8、 aj = temp; temp = bj - 1; bj - 1 = bj; bj = temp;/输出结果 FILE *fp; if(fp=fopen(s,w)=NULL) int i,j,k,l=0; fprintf(fp,n坐标表示结果:n); for(i=1;i=M*N;i+) for(j=0;jM;j+) for(k=0;k= M * N) Out(); exit(1); /求得一个解时,退出程序 else int i; int count8,s8; int k = 0; for (i = 0; countk = w(x + ai0, y + ai1); /求权值 sk+ = i;
9、 /保存下一个结点的序号 r(count,s, k);/排序 k; int d = si; x += ad0; y += ad1; chessxy = t + 1; printf(%d ,chessxy); b(t + 1, x, y); /递归调用 回溯 chessxy = 0; x -= ad0; y -= ad1;int main() int x = 0; int y = 0; chessxy = 1; sprintf(s,result.txt b(1, x, y);专业班级指导教师评语: 指导教师签名: 年 月 日成绩评定项 目分 值评 分 要 素成 绩1设计过程中出勤、学习态度等方面20上机出勤及端正的学习态度、认真刻苦程度等2软件设计质量40采用的算法、设计方案,设计结果,界面友好等方面进行综合评定3 答辩能简明扼要地阐述设计的主要内容,能准确流利地回答各种问题4设计报告书写10条理清晰,表述清楚、措词得当5 实际动手能力组长全面负责,承担复杂的模块设计分值就高总 成 绩计算机系课程设计指导教师评分表
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1