当前位置:文档之家› 八皇后实验报告

八皇后实验报告

八皇后实验报告
八皇后实验报告

实验项目:八皇后问题

1.实验目的:通过求解皇后问题,熟悉深度优先搜索法DFS(回溯

法(Backtracking Algorithms)技术。

2.实验内容:由n2个方块排成n行n列的正方形称为n元棋盘。如

果两个皇后位于n元棋盘上的同一行、同一列或同一对角线上,则称它们在互相攻击。现要找出使棋盘上n个皇后互不攻击的布局。编制程序解决上述问题,以n=6运行程序,输出结果。

3.程序简介:将n个皇后放到一个n*n的方阵中,要求每个皇后不

在同一行同一列及同一对角线,我的程序是先把每个皇后放在了第零列,然后再按行检查,不符合要求继续下一列,若已经到这一行的最后一列,还没找到符合要求的位置,则回到上一行。4.算法设计介绍:

定义一个一维数组,数组的下标是皇后所在位置的行数,数组存的值是皇后所在位置的列数,现将A[0]-A[n-1]都赋成零,然后随着检查的进行,皇后的位置也在不断地变化,最后找到一个符合要求的方阵时,本质上就是一个存放整数的一维数组,数组的下标是行数,存放的值是列数。

5.困难及解答

我很久以前就听说过八皇后问题,没想到现在轮到自己编了,一开始还真是特别糊涂呢,后来老师上课把算法大概讲了一遍,就清楚很多了,要说问题,就是一开始纠结怎么存放皇后,我开始想用二维数组着,后来老师说用一维数组比较好做,我看了一下

老师的算法,就明白了大概,经过一段时间就编出来了

5.心得

我编程变得还是很少,天天下决心说以后多编,也没践行,心想着吧,不挂在嘴上了,努力!

6.程序清单

/*

// 我真诚地保证:

// 我独立完成了整个程序从分析、设计到编码的所有工作。

// 如果在上述过程中,我遇到了什么困难而求教于人,那么,我将在程序实习报告中

// 详细地列举我所遇到的问题,以及别人给我的提示。

// 我的程序里中凡是引用到其他程序或文档之处,

// 例如教材、课堂笔记、网上的源代码以及其他参考书上的代码段,

// 我都已经在程序的注释里很清楚地注明了引用的出处。

// 我从未没抄袭过别人的程序,也没有盗用别人的程序,

// 不管是修改式的抄袭还是原封不动的抄袭。

// 我编写这个程序,从来没有想过要去破坏或妨碍其他计算机系统的正常运转

文件名称:

创建者:

创建时间:2011.4.14

最后修改时间:2011.4.17

功能:不同个数皇后的排列问题,各个皇后不再同一行同一列以及同一对角线

文件中的函数名称和简单功能描述:bool unguarded(int A[],int m),检查A[]-1列和第m-1行的皇后有没有设防

文件中定义的全局变量和简单功能描述:无

文件中用到的他处定义的全局变量及其出处:无

与其他文件的依赖关系:独立

2.关于类的说明:

类名称:无

定义该类的目的:

类属性:

类中函数及功能:

与其他类的关系(调用/被调用哪类对象中的什么函数):

3. 关于函数的说明

(1) 函数名称:bool unguarded(int A[],int m)

函数功能描述:检查A[]-1列和第m-1的皇后是否设防

函数调用之前的预备条件:一位数组和整数m

返回后的处理:返回一个bool型的变量,若true,则下一个进入方阵的皇后可以放在这,反之,则不能;

返回值(如果有的话):true or false

函数的输入参数:无

函数的输出参数:无

*/

#include "iostream"

#define max 100

using namespace std;

bool unguarded(int A[],int m)

{

int n;

for(n=0;n

{

if((A[n]==A[m])||((A[n]+n)==(A[m]+m))||((A[n]-n)==(A[m]-m))||((n

-A[n])==(m-A[m]))) //这种检查方法不包含同一行的情况,因为m 不可能等于n

return false;

}

return true;

}

int main()

{

int n,i,A[max],s=1;

//用一维数组表示皇后的位置的思想来自课堂笔记

cout<<"请输入皇后的个数"<

cin>>n;

if((n<=3)||(n>=100)) cout<<"请不要输入1、2、3或者大于100的数!"<

else{

for(i=0;i

while(i>=0) //回溯结束的条件

{

if(A[i]<=n-1) //当前行数的前边的每一行都要检查,从第零列检查到第n-1列

{//检测A[i]与A[0]~A[i-1]是否有冲突

if(!unguarded(A,i)) A[i]++;//设防,继续往下一列走

else

{

if(i

else //是最后一行的话输出皇后的摆放方式

{

cout<<"第"<

for(int j=0;j

for(int d=0;d

if(d!=A[j])

cout<<'+'<<' ';

else

cout<<'@'<<' ';}

cout<

s+=1;//记录已近有几种摆放方式

A[n-1]++;//继续向右走

}

}

}

else {//当某一行全检查完了还是没有皇后的位置,就得返回到前一行去,即回溯

A[i]=0; i--;//行数减一

if(i>=0) A[i]++;}//向后挪一个把前一行的皇后 }}

return 0;

}

运行结果:

八皇后问题的解决完整文档

工学院 数据结构课程设计报告设计题目:八皇后 2008 年 6 月25 日 设计任务书

摘要: 八皇后问题要求在一个8*8的棋盘上放上8个皇后,使得每一个皇后既攻击不到另外七个皇后,也不被另外七个皇后所攻击.按照国际象棋的规则,一个皇后可以攻击与之处在同一行或同一列或同一斜线上的其他任何棋子.因此,八皇后问题等于要求八个皇后中的任意两个不能被放在同一行或同一列或同一斜线上。 而本课程设计本人的目的也是通过用c++语言平台将一个8*8的棋盘上放上8个皇后,使得每一个皇后既攻击不到另外七个皇后,也不被另外七个皇后所攻击的92种结构予以实现.使用递归方法最终将其问题变得一目了然,更加易懂。 关键词:八皇后; c++; 递归法

目录 1. 课题综述 (1) 1.1课题的来源及意义 (1) 1.2面对的问题 (1) 2. 需求分析 (1) 2.1涉及到的知识 (2) 2.2软硬件的需求 (2) 2.3功能需求 (2) 3. 概要设计 (2) 4. 详细设计和实现 (3) 4.1算法描述及详细流程图 (3) 4.1.1算法描述 (3) 4.1.2算法流程图 (3) 5. 代码编写及详细注释 (4) 6. 程序调试 (8) 6.1调试过程、步骤及遇到的问题 (8) 7. 运行与测试 (8) 7.1运行演示 (8) 总结 (10) 致 (11)

参考文献 (12) .

1. 课题综述 1. 1课题的来源及意义 八皇后问题是一个古老而著名的问题,该问题是十九世纪著名的数学家高斯1850年提出的。 在国际象棋中,皇后是最有权利的一个棋子;只要别的棋子在它的同一行或同一列或同一斜线(正斜线或反斜线)上时,它就能把对方棋子吃掉。所以高斯提出了一个问题:在8*8的格的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后都不能处于同一列、同一行、或同一条斜线上面,问共有多少种解法。 到了现代,随着计算机技术的飞速发展,这一古老而有趣的数学游戏问题也自然而然的被搬到了计算机上。运用所学计算机知识来试着解决这个问题是个锻炼和提高我自己编程能力和独立解决问题能力的好机会,可以使我增强信心,为我以后的编程开个好头,故我选择了这个有趣的课题。 1. 2 面对的问题 1)解决冲突问题: 这个问题包括了行,列,两条对角线; 列:规定每一列放一个皇后,不会造成列上的冲突; 行:当第I行被某个皇后占领后,则同一行上的所有空格都不能再放皇后,要把以I为下标的标记置为被占领状态; 2)使用数据结构的知识,用递归法解决问题。 2. 需求分析

八年级物理上实验报告

八年级物理实验报告册 大柳九年制学校理化组 2014年9月1日

目录 一、用刻度尺测量长度 2 二、用停表测量时间 3 三、测量同学们跑步的平均速度 4 四、用温度计测量时的温度 5 五、探究固体熔化时温度的变化规律 6 六、探究水沸腾时温度变化的特点 7 七、探究光反射时的规律 8 八、探究平面镜成像的特点 9 九、探究光折射时的规律 10 十、探究凸透镜成像的规律 11 十一、用天平测固体和液体的质量 12 十二、测量盐水和形状不规则固体的密度 13

一、用刻度尺测量长度 实验报告 班级:实验人:试验时间:审核: 实验名称:用刻度尺测量长度 实验目的: 实验器材: 实验设计: 1、测量前“三观”: 一观:二观:三观: 2、测量时 一放、刻度尺要与被测对象;刻度线紧贴被测物;零刻线与被测对象一端对齐 二读、视线要刻度尺刻线,不要斜视;读数时要估读到 三记、记录数据由数字和组成。 进行试验: 测作业本和物理课本的长、宽 评估交流:为使测量更精确,应选用分度值的刻度尺(填“大”“小”)如何正确使用刻度尺? (1)使用刻度尺前要注意观察它的量程、分度值和零刻度线是否磨损。 (2)用刻度尺测量时,尺要沿着被测长度,不利用磨损的刻度,读数时视线要与尺面垂直;在精确测量时,要估读到分度值的下一位。 (3)测量结果由数值和单位组成。

二、用停表测量时间 实验报告 班级:实验人:试验时间:审核:实验名称:用停表测量时间 实验目的: 实验器材: 实验设计: 1、观察停表 停表有个表盘,大表盘数字代表,小表盘数字代表; 有根指针,长指针是,短指针是。 停表秒针走一圈是分钟。 2、停表时间等于分针指示能准确读数部分加上秒针指示读数部分。 进行试验: 用停表测出你脉搏跳动10次所用时间 s,1min内你的脉搏跳动了次。评估交流:大家的测量结果是否相同。

n后问题实验报告

一.实验目的 1. 了解皇后相互攻击的条件:如果任意两个皇后在同一行,同一列或同一对角线,则她们相互攻击。 2. 运用迭代的方法实现n皇后问题,求解得到皇后不相互攻击的一个解 二.实验内容 基本思路:用n元组x[1:n]表示n后问题的解,其中x[i]表示第i个皇后放在棋盘的第i行的第x[i]列。抽象约束条件得到能放置一个皇后的约束条件:(1)x[i]!=x[k]; (2)abs(x[i]-x[k])!=abs(i-k)。应用回溯法,当可以放置皇后时就继续到下一行,不行的话就返回到第一行,重新检验要放的列数,如此反复,直到将所有解解出。在回溯法中,递归函数Backtrack(1)实现对整个解空间的回溯搜索。Backtrack(i)搜索解空间的第i层子树。类Queen的数据成员记录解空间的节点信息,以减少传给Backtrack函数的参数。sum记录当前已找到的可行方案数。 运用回溯法解题通常包含以下三个步骤: (1)针对所给问题,定义问题的解空间; (2)确定易于搜索的解空间结构; (3)以深度优先的方式搜索解空间,并且在搜索过程中用剪枝函数避免无效搜索。 源代码: #include using namespace std; class Queen{ friend int nQueen(int); private: bool Place(int k); void Backtract(int t); int n,*x; long sum; //可行方案数 }; bool Queen::Place(int k) { for(int j=1;j

(人教版)8年级上物理实验报告(全部)

物理实验报告 ____级__班__号 姓名_________实验日期2013年9月4日实验名称用刻度尺测量长度 实验目的学会使用刻度尺测长度 实验器材刻度尺、课本、长方体、硬币 实验原理 实验步骤 1.测量长方体的边长 2.测量《科学》课本的长度、宽度 3.测量硬币的直径

数据记录、处理、结果表述: 第一次第二次第三次平均值长方体的长/cm 10.00 10.00 10.00 10.00 长方体的宽/cm 8.02 7.98 8.01 8.00 长方体的高/cm 2.50 2.52 2.51 2.51 物理课本长/cm 26.10 26.12 26.10 26.11 物理课本宽/cm 18.00 18.00 18.00 18.00 硬币的直径/cm 2.50 2.50 2.50 2.50 回答问题 使用刻度尺时应注意哪些问题? 1、量程 2、分度值 3、零刻度是否磨损 讨论、分析实验中的问题 评语 教师签名

物理实验报告 ____级__班__号 姓名_________实验日期2013年9月5日实验名称用停表测量时间 实验目的学会使用用停表测量时间 实验器材停表 实验原理 实验步骤 1.认识停表 2.按动停表上的按钮,观察指针的变化,学会使用方法。 3.测量脉搏跳动10次的时间。 4.测量1分钟脉搏跳动的次数。

数据记录、处理、结果表述: 脉搏跳动10次的时间。 1分钟脉搏跳动的次数。 回答问题 讨论、分析实验中的问题 评语 教师签名

物理实验报告 ____级__班__号 姓名_________实验日期2013年9月12日 实验名称测量平均速度 实验目的进一步练习使用停表测量时间及刻度尺测长度 实验器材秒表、带刻度的木板(或轨道小车)、小车、弹簧片、木块、刻度尺. 实验原理:V=S/t 实验步骤 1、检查器材,并将器材按装置图放置,把木板和木块组装成斜面,小车放于斜面顶端A点,弹簧片固定在斜面下端C点,测出距离S1记录于表格中;测出时间为t1,同样记录于表格中,利用公式v1=S1/t1计算出v1记于表格。 2、将金属片放于B处固定,重复步骤上述过程,进行第二次测量,同时将AB之间的S2、t2和计算出的v2记于表格。 3、利用S1-S2=s3,t1-t2=t3,算出BC之间的S3、t3,再用v3=S3/t3算出v3记于表格。 4、比较v1、v2、v3的大小从而得出实验结论。 5、收拾整理器材。

数据结构课程设计报告-8皇后问题

数据结构课程设计 选题:八皇后问题 姓名: 学号: 指导老师: 目录 一.选题概述---------------------------------------3

二.设计要求与分析--------------------------------3 三.数据结构与定义--------------------------------4 1.结构体定义 2.函数定义 3.函数之间的定义 四.程序段与分析----------------------------------5 五.完整程序代码及运行结果截图------------------7 六.心得体会--------------------------------------10 七.参考文献--------------------------------------10

一.选题概述: 在实际应用中,有相当一类问题需要找出它的解集合,或者要求找出某些约束条件下的最优解。求解时经常使用一种称为回溯的方法来解决。所谓回溯就是走回头路,该方法是在一定的约束条件下试探地搜索前进,若前进中受阻,则回头另择通路继续搜索。为了能够沿着原路逆序回退,需用栈来保存曾经到达的每一个状态,栈顶的状态即为回退的第一站,因此回溯法均可利用栈来实现。而解决八皇后问题就是利用回溯法和栈来实现的。 二.设计要求与分析 八皇后问题是在8x8的国际象棋棋盘上,安放8个皇后,要求没有一个皇后能够“吃掉”任何其他一个皇后,即没有两个或两个以上的皇后占据棋盘上的同一行、同一列或同一条对角线。 八皇后在棋盘上分布的各种可能的格局,其数目非常大,约等于232种,但是,可以将一些明显不满足问题要求的格局排除掉。由于任意两个皇后不能同行,即每一行只能放置一个皇后,因此将第i个皇后放置在第i行上。这样在放置第i个皇后时,只要考虑它与前i 一1个皇后处于不同列和不同对角线位置上即可。因此,其算法基本思想如下: 从第1行起逐行放置皇后,每放置一个皇后均需要依次对第1,2,…,8列进行试探,并尽可能取小的列数。若当前试探的列位置

n皇后问题算法实验报告

算法分析与设计实验报告 实验内容:N皇后问题 实验时间:2013.12.3 姓名:杜茂鹏 班级:计科1101 学号:0909101605

一、实验内容及要求 在n×n格的棋盘上放置彼此不受攻击的n个皇后,按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 二、实验目的 1.巩固和加深对回溯法的理解 2.了解递归和迭代法在回溯法中的应用 三、算法分析 1.理解皇后不被攻击的条件:n后问题等价于在n*n格的棋盘上放置n个皇后,任何两个皇后不能放在同一行或同一列或同一斜线上。 2.算法模块简要分析 用数组存储皇后的位置,将i设置为0. Int place(*x,n) :数组x[] 用来表示列数,n为皇后个数,用来判断皇后是否被攻击,判断的条件是(x[i]-x[n]==i-n||x[i]-x[n]==n-i||x[i]==x[n])即用来判断“同一行或同一列或同一斜线上”。 Int print(*x,n):打印皇后解的空间。 Int iniprint(*x,n):初始化打印函数,相当于对棋盘初始化。将可以放皇后的位置记为“1”,不放皇后的位置记为“0”。 Int Nqueen(int n):n皇后问题求解,如果满足一组可行解,sum++。Int i=0,如果x[i]>=n的时候即进行下一行,i++;当i=n时,

sum++;输出该组可行解的个数和位置的矩阵。并且i--,回溯到上一层继续搜索可行解。 四、运行结果及分析 1、三皇后没有可行解 2、 2.4个皇后有2个可行解 3.5皇后有10个可行解 五、源代码 #include static int n, sum=0;//可行解个数 static int locate[20]; int place(int k) {//判断是否在一条线上并返回0,1 for(int i=1;in){

汇编实验报告(详细版)

计算机组成与汇编语言(实验报告) 内容: 实验一、六、七、八 院系专业:计算机学院计算机科学与技术 姓名:xxxxxxxxx 学号: 2011004xxxxx 完成时间:2012年12月1日

计算机组成与汇编语言实验报告 姓名xxxx 学号2011004xxxxx 计分 专业软件工程班级xxxx 实验日期2012年 12 月 1日实验名称实验一数制转换 实验目的 ●熟悉各种进制数据之间的相互转换方法。 ●掌握二-十进制数据的相互转换程序设计。 实验内容 1.将编写好的程序1输入、编译、连接并运行。 程序1清单 #include #include #include void main() { int i,l,s0=0,s=0; char a[17]; while(l!=16) { printf("请输入一个16位的二进制数:\n"); gets(a); l=strlen(a); for(i=0;i<16;i++) { if(a[i]!='0'&&a[i]!='1') {

printf("输入的二进制数不正确!!"); break; } } } if(a[15]=='1') s++; for(i=1;i<16;i++) { if(a[15-i]=='1') s+=(1<

说明:如果不是16位二进制则会提示错误。 2.将编写好的程序2输入、编译、连接并运行。 程序2清单 #include #include void main() { int t0,t1,t2,t3,i,j; int a[16]; printf("请输入一个十进制数:"); scanf("%d",&t0); t1=t0; for(i=0;i<16;i++) { t2=t1/2; if(t2>1) a[i]=t1%2; else if(t1==1) { a[0]=1; for(i=1;i<16;i++) a[i]=0; } else if(t1==2) { a[i]=0; a[i+1]=1; for(j=i+2;j<16;j++)

人工智能课程设计报告-n皇后问题解读

人工智能课程设计报告 课班姓学程:人工智能课程设计报告级 : 名: 号: 指导教师:赵曼 2015年11月

人工智能课程设计报告 人工智能课程设计报告 课程背景 人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,可以设想,未来人工智能带来的科技产品,将会是人类智慧的“容器”。 人工智能是对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。 人工智能是一门极富挑战性的科学,从事这项工作的人必须懂得计算机知识,心理学和哲学。人工智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。但不同的时代、不同的人对这种“复杂工作”的理解是不同的。 人工智能是计算机学科的一个分支,二十世纪七十年代以来被称为世界三大尖端技术之一(空间技术、能源技术、人工智能)。也被认为是二十一世纪三大尖端技术(基因工程、纳米科学、人工智能)之一。这是因为近三十年来它获得了迅速的发展,在很多学科领域都获得了广泛应用,并取得了丰硕的成果,人工智能已逐步成为一个独立的分支,无论在理论和实践上都已自成一个系统。 人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,主要包括计算机实现智能的原理、制造类似于人脑智能的计算机,使计算机能实现更高层次的应用。人工智能将涉及到计算机科学、心理学、哲学和语言学等学科。可以说几乎是自然科学和社会科学的所有学科,其范围已远远超出了计算机科学的范畴,人工智能与思维科学的关系是实践和理论的关系,人工智能是处于思维科学的技术应用层次,是它的一个应用分支。从思维观点看,人工智能不仅限于逻辑思维,要考虑形象思维、灵感思维才能促进人工智能的突破性的发展,数学常被认为是多种学科的基础科学,数学也进入语言、思维领域,人工智能学科也必须借用数学工具,数学不仅在标准逻辑、模糊数学等范围发挥作用,数学进入人工智能学科,它们将互相促进而更快地发展。

回溯法实验(n皇后问题)

算法分析与设计实验报告第六次实验

附录: 完整代码(回溯法) //回溯算法递归回溯n皇后问题#include #include #include #include"math.h" using namespace std; class Queen

{ friend int nQueen(int); //定义友元函数,可以访问私有数据 private: bool Place(int k); //判断该位置是否可用的函数 void Backtrack(int t); //定义回溯函数 int n; //皇后个数 int *x; //当前解 long sum; //当前已找到的可行方案数 }; int main() { int m,n; for(int i=1;i<=1;i++) { cout<<"请输入皇后的个数:"; //输入皇后个数 cin>>n; cout<<"皇后问题的解为:"<

实验三8选1数据选择器实验报告

实验三、八选一数据选择器 一、实验目的: 1.熟悉Quartus II6.0软件的使用和FPGA设计流程 2.用VHDL语言进行八选一数据选择器的设计 二、实验步骤: 一.建立文件夹:在D盘“xingming”的文件夹下建立一个名为“choice8” 的文件夹。 二.建立新工程 1.双击桌面上Quartus II6.0 的图标,启动该软件。 2.通过File => New Project Wizard… 菜单命令启动新项目向导。在随后弹 出的对话框上点击Next按钮,在 What is the working directory for this project 栏目中设定新项目所使用的路径:D:\xingming\choice8;在What is the name of this project 栏目中输入新项目的名字:choice8,点击 Next 按钮。在下一个出现的对话框中继续点击Next,跳过这步。 3.为本项目指定目标器件:选择器件系列为ACEX1K ,选择具体器件为 EP1K30TC144-3 1728 24576 ,再点击Next。在弹出的下一对话框中继续点击Next ,最后确认相关设置,点击Finish按钮,完成新项目创建。 三.设计输入 1.建立一个VHDL文件。通过 File => New 菜单命令,在随后弹出的对话框中 选择 VHDL File选项,点击 OK 按钮。通过 File => Save As 命令,将其保存,并加入到项目中。 2.在VHDL界面输入8选1数据选择器程序,然后通过File => Save As 命 令保存。

四.综合适配 1.选择Processing =>Start Compilation命令,检查发现无程序语法错误。 2.执行Tools =>Netlist Viewer =>RTL Viewe, 生成RTL图。 五.模拟仿真 1.在 File 菜单下,点击 New 命令。在随后弹出的对话框中,切换到 Other Files 页。选中 Vector Waveform File 选项,点击 OK 按钮。 2.选择命令 Edit=>End Time ,时间设置为30000ns , 进入到波形编辑界 面。在 Edit 菜单下,点击Insert Node or Bus… 命令,或在结点名字区连续双击鼠标左键两次,在新出现的框图中点击Node Finder出现结点查找器窗口搜索结点名, 在上一个框图中点击 Node Finder… 按钮后,打开Node Finder 对话框。点击 List 按钮,列出电路所有的端子。点击 >> 按钮,全部加入。点击 OK 按钮,确认。 3.回到 Insert Node or Bus 对话框,点击 OK 按钮,确认。 4.编辑输入激励信号波形.选中 a 信号,在 Edit 菜单下,选择 Value => Clock… 命令。在随后弹出的对话框的 Period 栏目中设定参数为10ns,点击 OK 按钮,重复前面的操作,设置输入信号b的参数为20ns ,c信号的参数为30ns,d信号的参数为40ns,e信号的参数为50ns,f信号的参数为60ns,g信号的参数为70ns,h信号的参数为80ns,输入激励信号波形编辑完毕。同样的,s[0]、s[1]、s[2]的参数分别设置为10ns、20ns、30ns。 5.功能仿真:(1)Processing=>Generate Functional Simulation Netlist

数据结构课程设计之-八皇后问题

课程设计报告 课程名称数据结构课程设计 课题名称八皇后问题演示 专业通信工程 班级通信工程1081 学号 0103 姓名刘献文 指导教师田娟秀郭芳 2012年 7 月 6 日

湖南工程学院 课程设计任务书 课程名称数据结构 课题八皇后问题演示 专业班级通信工程1081 学生姓名刘献文 学号 0103 指导老师田娟秀郭芳 审批 任务书下达日期 2012 年 7 月 1 日 任务完成日期2012 年 7 月 6 日

1设计内容与设计要求 设计内容 (4)课题四:八皇后问题演示 八皇后问题是一个古老而着名的问题,是回溯算法的典型例题。该问题是十九世纪着名的数学家高斯1850年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。 设计思路:?解决8皇后时,在安放第i行皇后时,需要在列的方向从1到n试 探(j =1,…, n):首先在第j列安放一个皇后,如果在列、主对角线、次对角线方 向有其它皇后,则出现攻击,撤消在第j列安放的皇后。如果没有出现攻击,在第 j列安放的皇后不动,递归安放第i+1行皇后。 对于八皇后问题的实现,如果结合动态的图形演示,则可以使算法的描述更形象、更生动。要求用Turbo C或 MFC实现的八皇后问题的图形程序,能够演示全部的92组解。 选题方案: 所选题目根据学号确定,学号模6加1,即(学号%6+1)。如你的学号为9,则 所选题目号为:9%6+1=(题目4)。注意,所有的课题都要求用图形方式演示步骤 和结果。同学们可以自己针对数据结构课程中所讲算法来设计一个演示过程的算法。 设计要求: 课程设计报告规范 (1)需求分析 a.程序的功能。 b.输入输出的要求。 (2)概要设计 a.程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块 的功能。 b.课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的 结构,它们之间有什么关系等。 (3)详细设计

微生物学实验报告--第八周

年级:2009 专业:医学检验班级:一班姓名:赵富海学号:2009221792 实验八、细菌的药物敏感试验 【K-B法】 菌种(均为幼龄菌):金黄色葡萄球菌1.5×108/ml、大肠埃希菌1.5×108/ml 药物纸片:青霉素、庆大霉素、新诺明、环丙沙星 方法: 1.涂菌(棋盘划线法),室温放10min; 2.贴药敏纸片,注意间距(大于24mm)和边距(大于15mm); 3.置35℃24h判读结果。 结果如图所示: 金黄色葡萄球菌 金黄色葡萄球菌抗菌药物敏感性试验评价结果 实验结论:金黄色葡萄球菌对青霉素耐药,对庆大霉素、新诺明、环丙沙星敏感。 【试管稀释法】 菌种:金黄色葡萄球菌1.5×108/ml、大肠b1.5×108/ml 抗生素:庆大霉素32u/ml 方法: 1.对倍稀释抗生素

2.加菌液0.1ml/管,摇均35℃16—18h 3.判读MIC 试验操作如下图所示: 注意:设立对照管(肉汤对照管,待测菌生长对照管和质控菌生长对照管) 结果判断: 不出现肉眼可见生长的最低药物浓度为该药对该细菌的MIC. 如图: 实验结论:MIC=原药物浓度(32u/ml) ×稀释倍数(1:24)=2u/ml 【联合药敏试验】(示教) 金黄色葡萄球菌大肠b 结果判断: 金黄色葡萄球菌联合药敏试验结果判读:

①青+链=青单+链单→相加作用 ②青+红=青单+红单→相加作用 ③青+万=青单+万单→相加作用 ④青+林>青单+林单→协同作用 大肠b联合药敏试验结果判读: ①青+红=青单+红单→相加作用 ②青+链=青单+链单→相加作用 ③青+林=青单或林单→无关作用 ④青+南>青单+南单→协同作用 【实验讨论】 1.K-B法原理 将含有定量抗菌药物的纸片贴在已接种测试菌的琼脂平板上。纸片中所含有的药物吸取琼脂中的水分溶解后便不断地向纸片周围区域扩散形成递减的梯度浓度。在纸片周围抑菌浓度范围内测试菌的生长被抑制,从而形成透明的抑菌圈。抑菌圈的大小反映测试菌对测定药物的敏感程度。并与该药对测试菌的最低抑菌浓度(MIC)呈负相关关系,即抑菌圈愈大,MIC 愈小。 2. K-B法影响因素 ①培养基的质量,如PH、深度、硬度和表面湿度等; ②药敏纸片的质量,含药量和保存方式; ③接种菌量正确与否是影响结果的重要因素之一,取决于比浊标准的配制,正确使用和保存; ④试验操作质量:接种细菌后贴片时5~15分钟; ⑤孵育条件,温度和时间:培养时间16~18h,不要超过24h。 3.稀释法原理: 以水解酪蛋白(MH)液体培养基将抗生素作不同浓度的稀释,然后种入待测细菌,定量测定抗菌药物对被测菌的最低抑菌浓度(MIC)或最低杀菌浓度(MBC)。 4. 稀释法影响因素:培养基、接种菌量、蛋白质结合率、抗菌药物的配制、结果观察的时间等因素均能影响本试验的结果。 5.抗生素药物敏感性试验(AST)的意义 ①可预测抗生素治疗的效果,既AST试验结果为“敏感”时,治疗可能有效;试验结果为“耐药”时,使用该药物治疗肯定失败; ②指导临床医生选择使用抗生素,AST的结果往往在给予病人经验性治疗24~48h之后,若AST结果为“敏感”,该治疗为有效,若结果为“耐药”,即应更换药物; ③提供所选择药物的依据; ④监测耐药性,分析耐药菌的变迁,掌握耐药菌感染病的流行病学,控制和预防耐药菌感染的发生和流行。 6.通过此次实验掌握纸片扩散法(K-B法)、试管稀释法的原理、操作方法、结果的判读及其临床意义,并掌握联合药敏试验结果的观察、判断。

八皇后问题讲解

计算机科学与技术专业 数据结构课程设计报告设计题目:八皇后问题

目录 1需求分析 (3) 1.1功能分析 (3) 1.2设计平台 (4) 2概要设计 (4) 2.1算法描述 (5) 2.2算法思想 (6) 2.3数据类型的定义 (6) 3详细设计和实现 (7) 3.1算法流程图 (7) 3.2 主程序 (7) 3.3 回溯算法程序 (8) 4调试与操作说明 (10) 4.1调试情况 (10) 4.2操作说明 (10) 5设计总结 (12) 参考文献 (13) 附录 (13)

1需求分析 1.1功能分析 八皇后问题是一个古老而著名的问题,该问题是十九世纪著名的数学家高斯1850年提出的,并作了部分解答。高斯在棋盘上放下了八个互不攻击的皇后,他还认为可能有76种不同的放法,这就是有名的“八皇后”问题。 在国际象棋中,皇后是最有权利的一个棋子;只要别的棋子在它的同一行或同一列或同一斜线(正斜线或反斜线)上时,它就能把对方棋子吃掉。所以高斯提出了一个问题:在8*8的格的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后都不能处于同一列、同一行、或同一条斜线上面,问共有多少种解法。现在我们已经知道八皇后问题有92个解答。 1、本演示程序中,利用选择进行。程序运行后,首先要求用户选择模式,然后进入模式。皇后个数设0

数据结构实验报告——栈(八皇后问题)

1.实验要求 【实验目的】 1、进一步掌握指针、模板类、异常处理的使用 2、掌握栈的操作的实现方法 3、掌握队列的操作的实现方法 4、学习使用栈解决实际问题的能力 5、学习使用队列解决实际问题的能力 【实验内容】 利用栈结构实现八皇后问题。 八皇后问题19世纪著名的数学家高斯于1850年提出的。他的问题是:在8*8的棋盘上放置8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列、同一斜线上。请设计算法打印所有可能的摆放方法。 提示: 1、可以使用递归或非递归两种方法实现 2、实现一个关键算法:判断任意两个皇后是否在同一行、同一列和同一斜线上2. 程序分析 2.1 存储结构 存储结构:栈(递归) 2.2 关键算法分析 【设计思想】 由于八皇后问题,可以分解成算法相同的子问题,所以使用递归的方法 【伪代码】 1、输入皇后个数n 2、k=1 3、判断k是否大于n 3.1 是:打印一组可能 3.2 否:循环行位置1~n 判断该位置是否符合要求,若符合记录q[k]的坐标y值 k+1 重复3 【关键算法】 1、递归 void Queen::Queens(int k,int n)

{ int i; if(k>n) { Print(n); count(); } else { for(i=1;i<=n;i++) if(Isavailable(i,k)) //判断该行中该位置放置‘皇后’是否符合要求 { q[k]=i; //记录改行中该点的位置 Queens(k+1,n); //放置下一行的‘皇后’ } } } 2、判断皇后放置位置是否符合要求 bool Queen::Isavailable(int i,int k) { int j; j=1; while(j

实验八实验报告_卓越14_彭佳伟

C语言程序设计实验报告 专业计算机科学与技术班级卓越工程师班 日期2014年12月17日成绩 第八次实验指针实验指导教师李开 学生姓名彭佳伟学号U201414716 实验组别同组人姓名 实验名称指针实验 一、实验目的 (1)熟练掌握指针的说明、赋值、使用。 (2)掌握用指针引用数组的元素,熟悉指向数组的指针的使用。 (3)熟练掌握字符数组与字符串的使用,掌握指针数组及字符指针数组的用法。 (4)掌握指针函数与函数指针的用法。 (5)掌握带有参数的main函数的用法。 二、实验任务 1.源程序改错 下面的源程序中是否存在错误?如果存在,原因是什么?如果存在错误,要求在计算机上对这个源程序进行调试修改,使之能够正确执行。 源程序1 #include int main(void) { float *p; scanf("%f", p); printf("%f\n", *p); return 0; } 2.源程序完善、修改、替换 (1)下面的源程序的功能是:通过函数指针和菜单选择来调用字符串拷贝函数或字符串连接函数。请在程序中的下划线处填写合适的表达式、语句或代码片段来完善该程序。 #include #include int main(void) { char a[80], b[80], c[160], *result = c; int choice, i; do { printf("\t\t1 copy string.\n"); printf("\t\t2 connect string.\n");

printf("\t\t3 exit. \n"); printf("\t\tinput a number(1-3) please! \n"); scanf ("%d", &choice); }while(choice < 1|| choice > 5); switch(choice) { case 1: p = strcpy; break; case 2: p = strcat; break; case 3: goto dowm; } getchar(); printf("input the first string please! \n"); i = 0; printf("input the second string please! \n"); i = 0; result = (a, b); printf("the result is %s\n", result); dowm: ; return 0; } (2)请上机运行第(1)题程序,使之能按下面要求输出结果: 1 copy string. 2 connet string. 3 exit input a number(1-2) please! 2(输入) Input the first string please! the more you learn,(输入) input the second string please! the more you get.(输入) the result is the more you learn, the more you get. 3.跟踪调试源程序 请按下面的要求对所给的源程序进行操作,并回答问题和排除错误。 (1)单步执行源程序。进入strcpy时,watches窗口中s为何值?返回main时,watches 窗口中s为何值? (2)排除源程序中的错误,使程序输出结果为:there is a bote on the lake. 源程序3 #include char *strcpy(char *, char*); int main(void) {

实验报告总结(精选8篇)

《实验报告总结》 实验报告总结(一): 一个长学期的电路原理,让我学到了很多东西,从最开始的什么都不懂,到此刻的略懂一二。 在学习知识上面,开始的时候完全是老师讲什么就做什么,感觉速度还是比较快的,跟理论也没什么差距。但是之后就觉得越来越麻烦了。从最开始的误差分析,实验报告写了很多,但是真正掌握的确不多,到最后的回转器,负阻,感觉都是理论没有很好的跟上实践,很多状况下是在实验出现象以后在去想理论。在实验这门课中给我最大的感受就是,必须要先弄清楚原理,在做实验,这样又快又好。 在养成习惯方面,最开始的时候我做实验都是没有什么条理,想到哪里就做到哪里。比如说测量三相电,有很多种状况,有中线,无中线,三角形接线法还是Y形接线法,在这个实验中,如果选取恰当的顺序就能够减少很多接线,做实验就应要有良好的习惯,就应在做实验之前想好这个实验要求什么,有几个步骤,就应怎样安排才最合理,其实这也映射到做事情,不管做什么事情,就应都要想想目的和过程,这样才能高效的完成。电原实验开始的几周上课时间不是很固定,实验报告也累计了很多,第一次感觉有那么多实验报告要写,在交实验报告的前一天很多同学都通宵了的,这说明我们都没有合理的安排好自己的时间,我就应从这件事情中吸取教训,合理安排自己的时间,完成就应完成的学习任务。这学期做的一些实验都需要严谨的态度。在负阻的实验中,我和同组的同学连了两三次才把负阻链接好,又浪费时间,又没有效果,在这个实验中,有很多线,很容易插错,所以要个性仔细。 在最后的综合实验中,我更是受益匪浅。完整的做出了一个红外测量角度的仪器,虽然不是个性准确。我和我组员分工合作,各自完成自己的模块。我负责的是单片机,和数码显示电路。这两块都是比较简单的,但是数码显示个性需要细致,由于我自己是一个粗心的人,所以数码管我检查了很多遍,做了很多无用功。 总结:电路原理实验最后给我留下的是:严谨的学习态度。做什么事情都要认真,争取一次性做好,人生没有太多时间去浪费。 实验报告总结(二): 在分子生物学实验室为期两个月的实习使我受益匪浅,我不仅仅学习到了专业知识,更重要的是收获了经验与体会,这些使我一生受用不尽,记下来与大家共勉: 1.手脚勤快,热心帮忙他人。初来匝道,不管是不是自己的份内之事,都就应用心去完成,也许自己累点,但你会收获很多,无论是知识与经验还是别人的称赞与认可。 2.多学多问,学会他人技能。学问学问,无问不成学。知识和经验的收获能够说与勤学好问是成正比的,要记住知识总是垂青那些善于提问的人。 3.善于思考,真正消化知识。有知到识,永远不是那么简单的事,当你真正学会去思考时,他人的知识才能变成你自己的东西。 4.前人铺路,后人修路。墨守陈规永远不会有新的建树,前人的道路固然重要,但是学会另辟蹊径更为重要。

数据结构课程设计-八皇后问题

目录 1、课程设计的目的 (1) 2、课程设计的要求 (1) 3、课程设计的内容 (1) 3.1设计的内容 (1) 3.2算法思路 (1) 3.2.1算法的内容 (1) 3.2.2算法中函数的流程图 (1) 3.3程序调试与测试以及结果的分析 (3) 3.3.1详细设计 (3) 3.3.2遇到的问题及解决方法 (6) 3.3.3 算法的时空分 (6) 3.3.4结果分析 (6) 3.3.5 算法的改进 (6) 3.3.6 程序使用说明 (6) 3.3.7 测试结果 (7) 4、总结 (10) 5、参考文献 (10) 6、附录 (11)

八皇后问题 1、课程设计的目的 (1)了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; (2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;(3)提高综合运用所学的理论知识和方法独立分析和解决问题的能力; (4)训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风; 2、课程设计的要求 (1)设计的课题能够体现数据结构和算法的算法分析、设计、算法实现。 (2)根据自己对数据结构和算法的基本概念、原理和机制的理解,自拟题目和设计内容,选题尽可能结合实际的应用。 3、课程设计的内容 3.1设计的内容 八皇后问题是一个古老而著名的问题,该问题是十九世纪著名的数学家高斯1850年提出的,并作了部分解答。高斯在棋盘上放下了八个互不攻击的皇后,他还认为可能有76种不同的放法,这就是有名的“八皇后”问题。 在国际象棋中,皇后是最有权利的一个棋子;只要别的棋子在它的同一行或同一列或同一斜线(正斜线或反斜线)上时,它就能把对方棋子吃掉。所以高斯提出了一个问题:在8*8的格的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后都不能处于同一列、同一行、或同一条斜线上面,问共有多少种解法。现在我们已经知道八皇后问题有92个解答。 我要设计的程序就是怎样把92种解答直观清晰的让大家了解和认识。 3.2算法思想 3.2.1算法的内容 (1)解数组a,a[i]表示第i个皇后放置的列,范围为1~8。 (2)行冲突标记数组b,b[j]=0 表示第j行空闲,b[j]=1 表示第j行被占领,范围为1~8。(3)对角线冲突标记数组c、d。c[i-j]=0 表示第(i-j)条对角线空闲,c[i-j]=1 表示第(i-j)条对角线被占领,范围-7~7。d[i+j]=0 表示第(i+j)条对角线空闲,d[i+j]=1 表示第(i+j)条对角线被占领,范围2~16。 (4)抽象数据类型的定义 Print() //打印每一列皇后的放置的行数以及以矩阵形式形象的显示皇后的放置位置JudgeQueen1() //递归寻找摆放皇后位子 void main() //主函数调用 3.2.2算法中函数的流程图 (1)数据初始化。 (2)从n列开始摆放第n个皇后(因为这样便可以符合每一竖列一个皇后的要求),先测试当

相关主题
文本预览
相关文档 最新文档