八皇后问题稀疏矩阵的运课程设计说明书.doc
文本预览下载声明
兰州理工大学
数据结构
课程设计说明书
题目: 八皇后问题 稀疏矩阵的运算
院 系: 计算机科学与通信学院
专业班级: 计算机科学与技术2班
学 号:
学生姓名: XX
指导教师: XX
20 年 月 日
???????????
绪言
八皇后问题是一个古老而著名的问题。这个问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。例如:
0 0 0 0 0 0 0 0
面对这个问题,要放在以往可能就要耗费大量的时间在纸上画来画去,这样做的耗费了大量的精力,但是效果却不佳。借助计算机就可以很高效的完成这些工作。那么,采用什么样的数据结构和算法,才能在时间和空间复杂度上完成这个问题呢?
稀疏矩阵主要是实现在三元组存储结构与十字链表存储结构下输入稀疏矩阵,并对稀疏矩阵进行转置,相加,相减,相乘操作,最后输出运算后的结果。在两种不同的存储结构下,求两个具有相同行列数的稀疏矩阵A和B的相加矩阵C,并输出C;求出转置矩阵D,输出D;求两个稀疏矩阵A和B的相乘矩阵E,并输出E。
摘??要??本课程设计主要实现在三元组存储结构与十字链表存储结构下输入稀疏矩阵,并对稀疏矩阵进行转置,相加,相乘操作,最后输出运算后的结果。在程序设计中,考虑到方法的难易程度,采用了先用三元组实现稀疏矩阵的输入,输出,及其转置,相加,相乘操作的方法,再在十字链表下实现。程序通过调试运行,结果与预期一样,初步实现了设计目标。??
关键词??程序设计;稀疏矩阵;三元组;十字链表???
目录
??????????? II
绪言 II
摘??要?? III
关键词????? III
一 八皇后问题 3
1 需求分析 3
2 概要设计 4
3 详细设计 5
4 调试分析 7
5 测试结果 7
6 用户使用说明 14
7 程序源代码 15
小结 18
谢辞 19
参考文献 19
二 稀疏矩阵的运算 19
1 问题描述 19
2 需求分析 20
3 总体设计 21
3.1 Matrix结构的定义 21
3.2 系统流程图 22
4 详细设计 23
4.1 “菜单”界面 23
4.2 建立矩阵 23
4.2矩阵的转置 25
4.3矩阵的加法运算 26
4.4矩阵的减法运算 27
4.5 矩阵的乘法运算 27
5 程序运行 29
5.1 矩阵转置 29
5.2矩阵加法 29
5.3矩阵减法 29
5.4矩阵乘法 30
5.5退出及错误提示 30
6 程序源代码 31
7 总结 34
参考文献 35
一 八皇后问题
1 需求分析不能在同一列 不能在同一行 不能在同一个对角线上
1.2.本程序的目的是将八皇后中满足条件的所有的可能性统计出来, 然后将这些结果输出
1.3. 测试数据
输入皇后的个数8,程序会输出出可能的结果,以及统计结果.
2 概要设计
I.判断每个棋子是否满足规则的方法可以说是如出一辙。因此算法的整体思想是递规调用判断函数chess( )。从i行开始安置各行元素,当i=8时输出结果.
II.具体的chess( )函数的思想是: 先在第1行放上一个皇后,然后在第2行合适的位置放上一个皇后,依次类推,如果8行都放满了,说明找到了一个解,如果第好第i行的皇后后,第i+1行找不到合适的位置,这时就回到第i行,把第i行的皇后放到下一个位置,继续尝试下一行。如此反复,知道找到所有的解。注意,这种算法找的解可能有等价的,某些解可由别的解经过旋转棋盘得到。
2.2 数据类型的定义:
I. char Queen[8][8] 表示棋盘.这里定义为char类型的是为了找到满足条件的棋盘时将棋子占据的位置用一个字符代替.以使输出结果美观.
II. int a[8] 这个表示皇后所放置的列数 a[0]~a[7]表示第一列到第8列
III. int b[15] int c[15] 表示棋盘上的对角线左右两边一共两条
2.3. 主程序
Void main( )
{
初始化;
D
显示全部