版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本科学生实验(实践)报告院 系:计算机学院岸实验课程:算法分析与设计实验项目:回溯法应用马周游指导老师:曹霆懋开课时间:20112012年度第一学期专业:网络工程班 级:09级7班学 生:奚伟杰学 号:20092100217华南师范大学教务处综合试验:回溯法应用马周游实验目标:(1)熟悉使用回溯法求解问题的基本思路。(2)掌握回溯算法的程序实现方法。(3)理解回溯算法的特点。实验任务:(1)从所给定的题目中选择一题,使用回溯法求解之。(2)用文字来描述你的算法思路,包括解空间、限界函数、算法主要步骤等。(3)在Windows环境下使用C/C+语言编程实现算法。(4)记录运行结果,包括输入数据,
2、问题解答及运行时间。(5)分析算法最坏情况下时间复杂度和空间复杂度。(6)谈谈实验后的感想,包括关于该问题或类似问题的求解算法的建议。实验设备及环境:PC; C/C+等编程语言。实验主要步骤:(1)根据实验目标,明确实验的具体任务;(2)设计求解问题的回溯算法,并编写程序实现算法;(3)设计实验数据并运行程序、记录运行的结果;(4)分析算法时空性能;(5)实验后的心得体会实验分析:先假设马一开始位置为(x,y),对于当前所在位置(x,y),依次枚举8个方向搜索,直到 找到一组可行解为止。使用剪枝有3处:第一、使用Warnsdorffs rule,枚举当前解得时候 优先选择下一步可行步数最少的方
3、向;第二、若第一点中的方向存在不止一个,则优先选择 离中心位置较远的方向;每次都从中心点开始出发,求出一条合法路径后再平移映射回待求 路径。实验源代码:#include #include #include #include using namespace std;const int ix8 = (1, 2, 2, 1, -1, -2, -2, -1;const int iy8 = (2, 1, -1, -2, 2, 1, -1, -2;int midx, midy;struct Point (int x, y, c;Point(int xx = 0, int yy = 0, int cc =
4、0):x(xx), y(yy), c(cc) (bool operator (const Point & b) const (if (c != b.c) return c abs(b.x - midx) + abs(b.y - midy);struct Node (int x, y;Node(int xx = 0, int yy = 0):x(xx), y(yy) (;template inline void swap(T & a, T & b)(T t = a; a = b; b = t;int m, n;bool vis1010;int a1010;inline bool check(in
5、t x, int y)(if (x n II y n) return 0;if (visxy) return 0;return 1;bool find(int x, int y)(for (int i = 0; i 8; +i)if (x + ixi = midx & y + iyi = midy)return 1;return 0;Node ss10 * 10;Point b10 * 108, *tb;int dir10 * 10, bn10 * 10, top;bool dfs(int x, int y) (int i, j, tbn, nx, ny, mx, my, cnt;top =
6、1;visxy = 1;axy = 0;sstop = Node(x, y);dirtop = -1;while (top) (if (top = m & find(sstop.x, sstop.y) ( puts(”已找到找到一个可行解!”); return 1;if (top = m) (vis sstop.x sstop.y = 0;-top; else if (dirtop = -1) (x = sstop.x; y = sstop.y;tbn = 0;tb = btop;for (i = 0; i 8 II by v 1 II by 8) (printf(输入不合法!请重新输入骑士初
7、始坐标(1v=xv=8,1v=yv=8):);scanf(%d %d, &bx, &by);n = 8;midx = midy = n / 2;begin = clock();memset(vis, 0, sizeof(vis);m = n * n;dfs(midx, midy);end = clock();printf(所用时间:.0lfmsn”, double(end - begin);if (n v= 20) (k = m - abxby;for (i = 1; i v= n; +i) (for (j = 1; j v= n; +j) (aij = (aij + k) % m + 1;printf(%4d”, aij);puts();return 0;七、实验数据:4 1-1解座可 商个-W一 , 壬到: 莆商38 曩用411解 桎仃坐可始个.初一 口士到:骑 s28 费用31 请己所情输入骑士初始坐标=x =8 , :IX =/ =8:八、实验数据分析:上面的数值排成8*8的方阵,每个代表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024新媒体内容版权授权与保护合作协议2篇
- 2024年标准土地共同开发合同版
- 2023-2024学年高中信息技术选择性必修1(浙教版2019)数据与数据结构-说课稿-5.4-数据查找
- 2024提高教育资源共享传播能力采购合同3篇
- 2024数码相机租赁与体育赛事转播合同范本3篇
- 高血压健康宣教
- 专业车辆租赁协议:2024经典版式版
- 职业学院学生外出活动安全承诺书
- 2024志愿服务协议书
- 个人最高额抵押融资协议样本(2024版)版B版
- 民间借贷利息计算表
- 酒店保洁服务投标方案(技术方案)
- 《白描花卉妙笔生》 课件 2024-2025学年岭南美版(2024) 初中美术七年级上册
- 2025年公务员考试申论试题与参考答案
- 2024年秋季新人教PEP版三年级上册英语全册教案
- 苏教版四年级上册四则混合运算练习200道及答案
- 2024耐张线夹技术规范
- 2024年中考英语语法感叹句100题精练
- 《海洋与人类》导学案
- 挑战杯红色赛道计划书
- 第十五届全国石油和化工行业职业技能竞赛(化工总控工)考试题库-上(单选题)
评论
0/150
提交评论