ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:16.25KB ,
资源ID:12939396      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12939396.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(四皇后实验报告推荐word版 11页Word格式.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

四皇后实验报告推荐word版 11页Word格式.docx

1、比如第一行:R11,R12,R13,R14 棋盘中共有四行,所以共有16条规则。即: R11,R12,R13,R14R21,R22,R23,R24R31,R32,R33,R34R41,R42,R43,R44 16条规则中,哪些是当前可用规则,取决于DATA的长度,即:DATA中的元素个数。换言之,每次只能将一个棋子放在当前行的下一行。二、回溯法搜索策略图讨论:上述算法产生22次回溯,原因在于规则自然顺序排列,没考虑任何智能因素。 改进算法定义对角线函数:diag(i,j):过ij点最长的对角线长度值。规定: 如果: diag(i,k) diag(i,j) 则规则排列次序为: Rik, Rij

2、同一行四条规则中,对角线函数值小的排在前面 如果:diag(i,k) diag(i,j) 则规则排列次序为: Rij ,Rikj k 对角线长度相等的规则按照字母排列顺序排序 利用局部知识排列规则是有效的。 BACKTRACK算法对重复出现的状态没有判断,所以可能造成出现死循环。 没有对搜索深度加以限制,可能造成搜索代价太大。三、算法描述 回溯法在约束条件下先序遍历,并在遍历过程中剪去那些不满足条件的分支。使用回溯算法求解的问题特征,求解问题要分为若干步,且每一步都有几种可能的选择,而且往往在某个选择不成功时需要回头再试另外一种选择,如果到达求解目标则每一步的选择构成了问题的解,如果回头到第一

3、步且没有新的选择则问题求解失败。 在回溯策略中,也可以通过引入一些与问题相关的信息来加快搜索解的速度。对于皇后问题来说,由于每一行、每一列和每一个对角线,都只能放一个皇后,当一个皇后放到棋盘上后,不管它放在棋盘的什么位置,它所影响的行和列方向上的棋盘位置是固定的,因此在行、列方面没有什么信息可以利用。但在不同的位置,在对角线方向所影响的棋盘位置数则是不同的。可以想象,如果把一个皇后放在棋盘的某个位置后,它所影响的棋盘位置数少,那么给以后放皇后留下的余地就太大,找到解的可能性也大;反之留有余地就小,找到解的可能性也小。四、算法流程图五、源程序#include #define N 4char bo

4、ardNN;int t;int colN; /存储第i行对应的列的值,这样的(i,j)值满足当前棋盘上的皇后不能互相攻击。int safetyPlace(int x,int y) /(x,y)位置是否安全int i,j;for(i=0;ix;i+)j=coli;if(x=i|y=j)return 0;if(x-y=i-j|x+y=i+j) /判断左右对角线return 1;void get_position(int i)/处在第i行时状态int w,j;char a1=3;if(i=N) /输出棋盘for (w=0;wN;w+)for (j=0;jj+)if(boardwj=001)print

5、f(%c ,boardwj);else%c,a0) ;n);-nt+;int u;for (u=0;uu+) if (safetyPlace(i,u)=1)coli=u;/记录下第i行可行的列的位置 boardiu=001; /放置皇后get_position(i+1);/转换到下一个状态,即下一行coli=0; /回溯到当前状态,重置列和棋盘的值 boardiu=0; main()%c是皇后!nn,001);get_position(0);一共有%d种方法!,t);六、结果截图篇二:八皇后问题实验报告实验报告八皇后问题求解(递归和非递归)学号: 专业年级: 姓名:一、需求分析(要实现的功能描

6、述)1问题描述八皇后问题是一个以国际象棋为背景的问题:如何能够在88的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。八皇后问题可以推广为更一般的n皇后摆放问题:这时棋盘的大小变为nn,而皇后个数也变成n。当且仅当n = 1或n 4时问题有解。八皇后问题最早是由国际囯际象棋棋手马克斯贝瑟尔于1848年提出。诺克也是首先将问题推广到更一般的n皇后摆放问题的人之一。2实现功能八皇后问题实现了在棋盘上摆放八个皇后的功能,这八个皇后任意两个皇后都不能处于同一条横行、纵行或斜线上。3测试数据测试数据可以通过手工寻找三组满

7、足需要的值,测试数组(M,N),其中M代表皇后所在的行,N代表皇后所在的列。例如,第一组测试数据:(1,4)、(2,7)、(3,3)、(4、8)、(5,2)、(6,5)、(7,1)、(8,6);第二组测试数据(1,5)、(2,2)、(3,4)、(4,7)、(5,3)、(6,8)、(7,6)、(8,1);第三组测试数据: (1,4)、(2,2)、(3,7)、(4,3)、(5,6)、(6,8)、(7,5)、(8,1)。最后与编程求得的结果进行比较。如果这三组数据在最后编程求得的结果中,说明程序的编写基本没有什么问题。二、概要设计在进行概要设计的过程中,要清楚整个程序包含的功能模块及模块间的调用关系

8、。 对于八皇后问题,整个程序中应该包括主函数模块,摆放皇后的函数模块,以及判断皇后的位置是否摆放正确的判断模块。对于模块间的关系,在运行主函数的过程中会调用摆放皇后的函数模块,在摆放皇后的函数模块中,又会调用判断皇后位置是否摆放正确的判断模块。三、详细设计抽象数据类型中定义的各种操作算法实现(用N-S图描述) 对于求解八皇后问题的非递归算法,N-S图如下:对于八皇后问题求解的递归算法,N-S图如下:四、调试分析1程序在调式过程中出现的问题及解决方法由于对于C语言编程问题掌握的并非十分熟练,因而在程序的调试过程中出现了一些问题。例如,在编写位置冲突算法的过程中,在解决对角线问题上,没有考虑对角线

9、有两条,只考虑了其中的一条,因而在编写程序的过程中,没有使用绝对值,导致得到的满足要求的测试结果比实际的要多得多。再如,为了能够输出比较整齐的测试结果,开始的时候只是输出了皇后所在的列数,没有输出皇后的行数。后来,在添加了行数坐标后,两个程序输出了相同的比较整齐美观的测试结果。2算法的时间复杂度分析在考虑算法的时间复杂度问题上,只需考虑每个函数的最大的时间复杂度即可,求得的最大的时间复杂度即为整个程序的时间复杂度。对于递归程序的时间复杂度:O(?)对于非递归程序的时间复杂度:因而,对于递归和非递归程序两个程序的时间复杂度,递归程序的时间复杂度要高。五、用户手册由于在程序编写的过程中,使用的环境

10、为Visual C+ 6.0,因而在使用的过程中,最好使用Visual C+ 6.0,以免在程序运行错误。本程序的操作过程十分简单,不需要操作者有C语言基础。六、测试结果通过对于问题的编程求解,共得到了92种结果。从中任意选择三组数据进行测试。数组的第一个数值为皇后所在的行,第二个值为皇后所在的列。第一组测试数据:(1,4)、(2,7)、(3,3)、(4、8)、(5,2)、(6,5)、(7,1)、(8,6) 用图像形象表示为:再如,第二组测试数据:(1,5)、(2,2)、(3,4)、(4,7)、(5,3)、(6,8)、(7,6)、(8,1)(1,4)、(2,2)、(3,7)、(4,3)、(5,

11、6)、(6,8)、(7,5)、(8,1)由于空间有限,所以92种测试结果用数组的形式表示如下:篇三:八皇后实验报告实验项目:1. 实验目的:通过求解皇后问题,熟悉深度优先搜索法DFS(回溯法(Backtracking Algorithms)技术。2. 实验内容:由n2个方块排成n行n列的正方形称为n元棋盘。如果两个皇后位于n元棋盘上的同一行、同一列或同一对角线上,则称它们在互相攻击。现要找出使棋盘上n个皇后互不攻击的布局。编制程序解决上述问题,以n=6运行程序,输出结果。3. 程序简介:将n个皇后放到一个n*n的方阵中,要求每个皇后不在同一行同一列及同一对角线,我的程序是先把每个皇后放在了第零

12、列,然后再按行检查,不符合要求继续下一列,若已经到这一行的最后一列,还没找到符合要求的位置,则回到上一行。4. 算法设计介绍:定义一个一维数组,数组的下标是皇后所在位置的行数,数组存的值是皇后所在位置的列数,现将A0-An-1都赋成零,然后随着检查的进行,皇后的位置也在不断地变化,最后找到一个符合要求的方阵时,本质上就是一个存放整数的一维数组,数组的下标是行数,存放的值是列数。5.困难及解答我很久以前就听说过八皇后问题,没想到现在轮到自己编了,一开始还真是特别糊涂呢,后来老师上课把算法大概讲了一遍,就清楚很多了,要说问题,就是一开始纠结怎么存放皇后,我开始想用二维数组着,后来老师说用一维数组比

13、较好做,我看了一下 老师的算法,就明白了大概,经过一段时间就编出来了5. 心得我编程变得还是很少,天天下决心说以后多编,也没践行,心想着吧,不挂在嘴上了,努力!6. 程序清单/*/ 我真诚地保证:/ 我独立完成了整个程序从分析、设计到编码的所有工作。/ 如果在上述过程中,我遇到了什么困难而求教于人,那么,我将在程序 实习报告 中 / 详细地列举我所遇到的问题,以及别人给我的提示。/ 我的程序里中凡是引用到其他程序或文档之处,/ 例如教材、课堂笔记、网上的源代码以及其他参考书上的代码段,/ 我都已经在程序的注释里很清楚地注明了引用的出处。/ 我从未没抄袭过别人的程序,也没有盗用别人的程序, / 不管是修改式的抄袭还是原封不动的抄袭。/ 我编写这个程序,从来没有想过要去破坏或妨碍其他计算机系统的正常运转文件名称:创建者:创建时间:201X.4

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1