欢迎来到天天文库
浏览记录
ID:6789172
大小:48.50 KB
页数:12页
时间:2018-01-25
《数据结构课程设计-八皇后的问题求解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《数据结构》课程设计题目八皇后的问题求解学生姓名指导教师学院信息学院专业班级信科一班完成时间2014年1月2日第一章课程设计目的本学期我们对《数据结构》这门课程进行了学习。这门课程是一门实践性非常强的课程,为了让大家更好地理解与运用所学知识,提高动手能力,我们进行了此次课程设计实习。这次课程设计不但要求实习者掌握《数据结构》中的各方面知识,还要求实习者具备一定的语言基础和编程能力。具体说来,这次课程设计主要有两大方面目的。一是让实习着通过学习掌握《数据结构》中的知识。对于递归算法这一课题来说,所要求掌
2、握的数据结构知识主要有:if语句的选择结构,for语句的循环结构,函数的调用来实现。二是二是通过实习巩固并提高实习者的C语言知识,并初步了解VisualC++的知识,提高其编程能力与专业水平。第二章课程设计内容和要求2.1课程设计内容组成员名称和分工在一个8×8的棋盘里放置8个皇后,要求每个皇后两两之间不相"冲"(在每一横列竖列斜列只有一个皇后)并要求用递归算法实现,输出所有棋盘状态,其中空的地方为“*”,放置皇后的地方为“@”2.1.1八皇后的建立与输出对给定的8×8的棋盘里的八个皇后进行讨论,根据
3、递归法,循环结构和选择结构进行建立并输出之。2.2运行环境该程序的运行环境为Windows7系统,MicrosoftVisualC++6.0版本。第三章课程设计分析3.1数据类型规定了函数返回值类型。党执行函数体中的语句后,通常会产生一个结果,这就是函数的返回值,它可以是任何有效的类型。若函数执行后不返回值,数据类型习惯用void来表示。如果在函数定义时没有数据类型出现,则默认为函数返回值为整型值(int)。3.2函数调用调用一个函数之前必须对该函数进行说明。函数调用由函数名和函数调用运算符()组成,
4、()内有0个或多个逗号分隔的参数(称为实参)。每一个参数是一个表达式,且参数的个数与参数的类型要与被调函数定义的参数(称为形参)个数和类型匹配。当被调函数执行时,首先计算实参表达式,并将结果值传送给行参,然后执行函数体,返回的返回值被传送到调用函数。如果函数调用后有返回值,调用表达是可以用在表达式中,而无参函数的调用是一个单独的语句。3.3选择结构if语句的基本形式可分为两种:(1)if(表达式)语句其执行过程是,首先计算表达式的值,若不为0,条件判断为真,则执行()后面的语句,否则,if语句中止执行
5、,即不执行()后面的语句。(2)if(表达式)语句1else语句2其执行过程是,首先计算表达式的值,若不为0,条件判断为真,则执行()后面的语句,否则执行语句2。3.4循环结构for语句的一般形式:for(表达式1;表达式2;表达式3){语句;//循环体}其执行的过程有以下几个步骤:求解表达式1;求解表达式2,若其值为真,则执行for语句中指定的循环体语句,然后执行下面的第3)步。若为假,则结束循环;求解表达式3;转回上面第2)步继续执行;循环结束,执行for语句后面的其他语句。第四章算法(数据结构)
6、描述4.1.1八皇后的存储结构定义其列数,行数,主对角线,从对角线,算法的种类数,staticcharQueen[8][8];staticinta[8];//列数staticintb[15];//代表主对角线staticintc[15];代表从对角线staticintiQueenNum=0;//记录总的棋盘状态数voidqu(inti);//参数i代表行4.1.2初始化棋盘在确定其中八皇后棋盘中的位置时,应该初始化一个棋盘,然后再输入数据intmain(){intiLine,iColumn;//棋盘初
7、始化,空格为*,放置皇后的地方为@for(iLine=0;iLine<8;iLine++){a[iLine]=0;//列标记初始化,表示无列冲突for(iColumn=0;iColumn<8;iColumn++)Queen[iLine][iColumn]='*';}//主、从对角线标记初始化,表示没有冲突for(iLine=0;iLine<15;iLine++)b[iLine]=c[iLine]=0;qu(0);return0;}4.1.3建立并输出棋盘数组a、b、c分别用来标记冲突,a数组代表列冲突
8、,从a[0]~a[7]代表第0列到第7列,如果某列上已经有皇后,则为1,否则为0;数组b代表主对角线冲突,为b[i-j+7],即从b[0]~b[14],如果某条主对角线上已经有皇后,则为1,否则为0;数组c代表从对角线冲突,为c[i+j],即从c[0]~c[14],如果某条从对角线上已经有皇后,则为1,否则为0;voidqu(inti){intiColumn;for(iColumn=0;iColumn<8;iColumn++){if(a[iColumn]
此文档下载收益归作者所有