2014 年春季学期 《C 项目设计》报告 题 目: 八皇后问题 学 号: 092213112 姓 名: 刘泽中 组 名: 1 指导教师: 宋东兴 日 期: 2014
15 目 录 正 文 ···················· 3 1
问题描述 ···················· 3 2
总体设计与分析 ················· 3 3
相关代码 ···················· 5 4
调试分析 ···················· 9 5
软件使用说明书 ················ 11 总结 ····················· 11 附录:部分原程序代码 ············· 12 一、 问题描述 1
八皇后问题: 是一个古老而著名的问题
该问题是十九世纪著名的数学家高斯1850 年提出:在8×8 棋盘上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法
解决八皇后问题的关键在于: (1)找到合理的数据结构存放棋子的摆放位置
(2)要有合理的冲突检查算法
采用的方法是,先把 8 个棋子摆在棋盘上,每行摆一个,然后去检查这种摆放是否有冲突,如果没有冲突,即找到了一种解决方案
由于皇后的摆放位置不能通过某种公式来确定,因此对于每个皇后的摆放位置都要进行试探和纠正,这就是“回溯”的思想
在8 个皇后未放置完成前,每行摆放一个皇后,摆放第i 个皇后和第i+1 个皇后的试探方法是相同的,因此完全可以采用递归的方法来处理
二、总体设计与分析 1
设计效果 画一个8 * 8 的国际象棋盘,在棋盘某一位置上放一棋子,并让它按从左到右的方向 自 动 运 动 ,用户 可以使用光 标 键调 整 棋子运 动 的方向 ,找出所 有可能的摆放方案,将 包 含 指 定的棋