- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计-四、八、N皇后问题
计算机与软件工程学院
课程设计说明书
课 程 名 称: 数据结构与算法-课程设计
课 程 代 码: 106014389
题 目: 四、八、N皇后问题
年级/专业/班:
学 生 姓 名:
学 号: 312012080611523
开 始 时 间: 年 月 日
完 成 时 间: 年 月 日
课程设计成绩:
学习态度及平时成绩(30) 技术水平与实际能力(20) 创新(5) 说明书撰写质量(45) 总 分(100) 指导教师签名: 年 月 日
摘 要
解决八皇后问题主要利用了递归法、回溯法,以及对for语句、数据结构中树的灵活运用、和对栈及数组的掌握。编程实现了在8*8的格的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后都不能处于同一列、同一行、或同一条斜线上面。编程实现了任意给定一个初始位置,输出八皇后问题的一个布局。本次设计旨在学习各种算法,训练对基础知识和基本方法的综合运用及变通能力,增强对算法的理解能力,提高软件设计能力。在实践中培养独立分析问题和解决问题的作风和能力。
关键词:递归法; 回溯法; 顺序栈;数组;
目 录
1需求分析 6
2开发及运行平台 7
3 概要设计 8
4 详细设计 10
5 调试分析 11
6 测试结果 12
12
6.2 调试结果 12
13
7 结论 14
通过这次的课程设计,让我了解了八皇后这一经典的问题。同时让我更好地掌握了栈思想以及一维数组等等知识,以及一些书本上没有的东西,这对我以后的学习生涯以及将来步入社会起到很大的帮助。这次课程设计虽然花了我很多时间和精力,但很值得,因为它对我能力提高起到很大帮助。这次课程设计也提醒我以前知识的匮乏,它给我敲响了警钟,让我意识到自己基础的不扎实.当然这次实验还是有很多问题的。比如程序设计的界面不够好,一些程序并非自己所写,而是修改某些程序而成,但这些不该,在下次课程设计时不会再发生。 14
参考文献 15
附 录 16
1需求分析
八皇后问题是一个古老而著名的问题,该问题是十九世纪著名的数学家高斯1850年提出的,并作了部分解答。高斯在棋盘上放下了八个互不攻击的皇后,他还认为可能有76种不同的放法,这就是有名的“八皇后”问题。?
在国际象棋中,皇后是最有权利的一个棋子;只要别的棋子在它的同一行或同一列或同一斜线(正斜线或反斜线)上时,它就能把对方棋子吃掉。所以高斯提出了一个问题:在8*8的格的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后都不能处于同一列、同一行、或同一条斜线上面,问共有多少种解法。现在我们已经知道八皇后问题有92个解答。
本次课设要求指定任一初始位置,即可输出八皇后问题的所有行列布局。拓展完成四皇后问题。
2开发及运行平台
运行平台:Windos98/2000以上
开发平台:Microsoft Visual C++ 6.0
3 概要设计
3.1 结构设计理念
从n列开始摆放第n个皇后(因为这样便可以符合每一竖列一个皇后?的要求),先测试当前位置(n,m)是否等于0(未被占领)。如果是,摆放第n个皇后,并宣布占领,接着进行递归;如果不是,测试下一个位置(n,m+1),但是如果当n=8,m=8时,发现此时已无法摆放时,便要进行回溯。从问题的某一种可能出发,搜索从这种情况能出发,继续搜索,这种不断“回溯”的寻找解的方法,称为“回溯法”。??
使用数组实现回溯法的思想。
当n8时,便打印出结果。
3.2 类设计
类定义:class类名{
细节(数据成员,成员函数);
}
类函数定义:返回类型 类名::函数名(形参表){
函数体;
}
设计类eightqueen,利用类的成员函数Find求解。
用数据s[1...8]表示顺序栈,栈的下标表示皇后所在的行号,栈的内容表示所在列号。
用a[j],b[i+j],c[i-j]三个布尔数组(初值为真)检查皇后是否在列、主对角线、从对角线上冲突。a[j]=0,b[i+j]=0,c[i-j]=0表示未冲突。a[j]=1表示j列冲突(范围1-8),b[i+j]=1表示第i+j条对角线↗冲突(范围-7-7),若c[i-j]=1表示第i-j条对角线↖冲突(范围2-16)。
如在(i,j)上放置皇后,若满足a[j]b[i+j]c[i-j],则安全。
这个程序主要由4个模块组成,分别是画棋盘模块,
您可能关注的文档
- 教师招考—-教学(师大).ppt
- 教师心理健康教育考试小抄.doc
- 教师招聘考试《教育综合知识》历年真题.doc
- 教师招聘考试必考古诗文.doc
- 教学专用:泊秦淮上课用.ppt
- 教师招考总练习题(含课标、文学常识).doc
- 教师支持材料wang.ppt
- 教师教育的四个灵魂.ppt
- 教师的声音训练.ppt
- 教师版汇编初一年级第一次考试复习整合资料(军训前后周末作业).doc
- 分析let s单元56ago2卷纸zheng unit56.pdf
- 塑胶材料其它分类原料pa9t 12.pdf
- md16x16数字媒体切换器设备.pdf
- 者参考项目发起人学科类型单位序列承包商修订页代码顺序典型.pdf
- 届世界天然气大会阿姆斯特丹2006add10288.pdf
- 期测试记录表每周weekly g1g6 journeys tests level 6 lesson26.pdf
- modernize-whitepaper现代化您应用程序白皮书.pdf
- anybackup产品典型案例分析.pdf
- 约克金融工程课程tfeslide32.pdf
- 广州市妇女儿童医疗中心历份教学药历01tjy.pdf
文档评论(0)