1、 计算机科学与技术系 课程设计报告 2013 2014 学年第(二) 学期 课程课程 数据结构与算法数据结构与算法 课 程 设 计 名 称课 程 设 计 名 称 马拦过河卒马拦过河卒问题问题 学生姓名学生姓名 学号学号 专业班级专业班级 指导教师指导教师 2013 年 6 月 数据结构与算法设计报告数据结构与算法设计报告 目目 录录 课程设计目的课程设计目的 内容概要内容概要 关键词关键词 正文正文 1、问题分析和任务 2、 数据结构的选择和概要设计 3、 详细设计和编码 4、 上机调试 5、 测试结果及其分析 6、 用户使用说明 7、 参考文献 8、 附录 心得体会心得体会 鸣谢鸣谢 课程设
2、计目的课程设计目的: : “数据结构与算法”精品课程建设组根据“数据结构与算法”课程教学大 纲的要求,精心选择了一批课程设计题目,要求学生选择其中的题目,通过独立 解决这些问题,在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法 的设计及其实现等方面加深对课程基本内容的理解和综合运用,按“课、程设计 教学大纲”的要求完成“数据结构与算法课程设计报告”。使学生深刻理、解、 牢固掌握数据结构和算法设计技术,提高分析和解决实际问题的能力。在程序设 计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练 内容概要内容概要: : 棋盘上 A 点有一个过河卒,需要走到目标 B 点。卒行走
3、的规则:可以向下、 或者向右。同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可 达的点称为对方马的控制点。因此称之为“马拦过河卒”。 棋盘用坐标表示,A 点(0, 0)、B 点(n, m)(n, m 为不超过 13 的整数),同样马 的位置坐标是需要给出的。要求计算出卒从 A 点能够到达 B 点的路径的条数,假 设马的位置是固定不动的,并不是卒走一步马走一步。 关键词关键词: :马过河马过河, ,递归法递归法, ,回溯法回溯法, ,数组数组. 正文正文: : 一、一、问题分析问题分析和任务定和任务定义义 图 1-1 坐标轴 A 点有一个过河卒,需要走到目标 B 点。卒行走的规则
4、:可以向下、或者向 右。同时在棋盘上的任一点有一个对方的马(如上图 1-1 的 C 点),该马所在的 点和所有跳跃一步可达的点称为方马的控制点。例如上图 C 点上的马可以控制 9 个点(图中的 P1,P2.P8 和 C)。卒不能通过对方的控制点。 棋盘用坐标表示,A 点(0,0)、B 点(n, m)(n,m 为不超过 13 的整数, 并由键盘输入),同样马 的位置坐标是需要给出的(约定:CA,同时 CB)。 现在要求你计算出卒从 A 点能够到达 B 点的路径的条数。做一个表,记录马可以 攻击的位置,主要要包括马本身的位置;然后从(0,0)开始每次递归(x+1,y) 和(x,y+1) ,如何(x
5、=n1 /查看马是否能够攻击到 if(c+1=0) /马不能在 y 坐标为 1 的点 if(d-1=0) ac-2d-1=0; if(d+1=0) /马不能在 y 坐标为 1 的点 if(d-1=0) ac-2d-1=0; if(d+1=Y) ac-2d+1=0; if(c+2=0) ac+2d-1=0; if(d+1=Y) ac+2d+1=0; fun(0,0); printf(“路径的条数为:“); printf(“%dn“,k); printf(“是否继续?0-退出n“); scanf(“%d“, if(s=0) break; return 0; 心得体会心得体会: : 本次的数据结构课
6、程设计针对具体的实际项目来进行问题分析,数据结构的 选择和概要设计,详细设计,测试分析等具体的步骤流程走下来,从中我收获了 很多 经过一周的课程设计,有很多的心得体会。 首先,在编写函数之前仔细的将本次课程设计的题目看懂,其次,根据题目要 求考虑用数据结构中的那个知识点来实现题目的要求。此次,我的课程设计题目 比较简单,很容易理解,但是一开始还是把题目要达到的结果想错了,后来经过 一个同学的提点发现自己错了。将题目理解后,虽然不能用栈的思想来解决这个 为题,但是用其他的数据结构思想既简单又容易理解。在此次过程中,我发现了 一些自己的不足:拿来一个题目,对于问题理解的有些不全面与偏差,直到在网 上查询后在正确知道了问题的根本所在;发现我编的程序,太乱没有条理性,当 我有不会的问题打算询问同学时,说我编的太乱,所以必须慢慢改正,使程序具 有科学性、条理性。 通过这次课程设计,我深刻认识到算法在程序设计中的