
机上实验涉及数据结构,八皇后问题采用栈数据结构,使用C语言实现。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
实验二:八皇后问题(栈)
实验目的在于,巩固并熟练掌握栈操作所涉及的基本算法原理。
实验所实现的功能是,通过运用回溯法以及栈数据结构,解决经典的八皇后问题:在8×8的国际象棋棋盘上,需要放置8个皇后,并且确保没有任何两个皇后之间存在攻击关系,即不能处于同一行、同一列或同一对角线上。
实验所需时间约为4小时。
设计思路如下:采用数据结构来辅助判断皇后之间的冲突。具体而言,定义了三个布尔类型的枚举集合:`enum boolean { false , true }`。此外,还定义了九个元素的数组`a[9]`和十七个元素的数组`b[17]`以及`c[17]`,用于检查皇后之间的潜在冲突情况。安全性评估依赖于逻辑表达式,例如 `a[ j ] && b[ i+j ] && c[ i-j+9 ]`。 同时,使用顺序栈来记录皇后的位置信息;其中 `s[1..8]` 表示顺序栈,栈的下标值对应于皇后的所在行号,而栈的内容则表示该皇后所在的列号。该算法的抽象描述如下:(1)初始时设置当前行和当前列均为1;(2)进入一个循环,只要当前行号小于等于8;(3)在当前行中逐列试探,寻找一个安全的位置放置皇后;(4)如果找到一个安全的位置(即安全列号),则将该列号记录到栈中,并将下一行的状态设置为当前行的状态以及第一列设置为当前列;(5)否则,退栈回溯到上一行,移除该行已放置的皇后并将该皇后的所在列的下一列设置为当前列;(6)循环结束。
全部评论 (0)
还没有任何评论哟~


