



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法设计与分析实验报告八皇后问题-姓名:崔明鑫学号:08208012班级:软件83【问题描述】在国际象棋盘上放八个皇后,要求任一皇后吃不到别人,也不受其他皇后的攻击,求出问题的所有解。【问题分析&算法设计】用8元组x1: n表示8后问题。其中x i表示皇后i放在棋盘的第i行的第x i列。由于不允许将2个皇后放在一列,所以解向量中的x i互不相同。2个皇后不能放在同一斜线上是问题的隐约束。故若2个皇后放置的位置分别是(i,j)和(k,l),且i j = k l或i + j = k + l,则说明这2个皇后处于同一斜线上。这两个方程分别等价于i k = j l和i k = l j。由此可知,只要|i - k| = |j - l|成立,就表明2个皇后位于同一条斜线上。问题的隐约束化成了显约束。用回溯法解决8皇后问题时,用完全8叉树表示解空间。【算法实现】#include stdio.h#include math.h#include iostream.h#define N 8/* 定义棋盘大小 */staticint sum;/* 当前已找到解的个数 */staticint xN;/* 记录皇后的位置,xi表示皇后i放在棋盘的第i行的第xi列 */* 每找到一个解,打印当前棋盘状态 */void Show()sum+;cout 第 sum 种情况: endl;cout 坐标为:t;for(int k = 0; k N; k+)cout ( k+1 , xk ) ;cout endl;cout -n;for (int i = 0; i N; i +) for (int j = 0; j N; j +)if (j = xi) /printf( );cout * | ;else /printf(* );cout | ;cout n-n;/* 确定某一位置皇后放置与否,放置则返回1,反之返回0 */int Judge(int k)/ 测试皇后k在第k行第xk列时是否与前面已放置好的皇后相攻击。 xj = / xk 时,两皇后在同一列上;abs(k - j) = abs(xj - xk) 时,两皇 / 后在同一斜线上。两种情况两皇后都可相互攻击,故返回0表示不符合条件。for (int j = 0; j k; j +)if (abs(k - j) = abs(xj - xk) | (xj = xk) return 0;return 1;/* 主递归函数,搜索解空间中第i层子树 */void Backtrack(int t)/* t = N 时,算法搜索至叶结点,得到一个新的N皇后互不攻击的放置方案 */if (t = N)Show();elsefor (int i = 0; i N; i +) xt = i;if (Judge(t) Backtrack(t + 1);int main(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目出资合同协议书范本
- 物流公司的采购合同范本
- 门面房车位出租合同范本
- 消防施工协议合同书范本
- 汉中酒店承包联营协议书
- 电商app开发合同范本
- 申请延期的补充合同范本
- 派出所门面出租合同范本
- 父子结婚房子协议书范本
- 污泥处理外包合同协议书
- 青少年心理发展与教育(硕士)
- 账号归属公司合同协议书
- 小学三年级数学附加题100道附答案(完整版)
- 异构网络连接融合
- 中考专题之《非连续性文本阅读攻略》课件55张
- 高尿酸血症的护理措施
- 产能规划方案
- 居家养老上门服务投标方案(技术方案)
- GB/T 4437.1-2023铝及铝合金热挤压管第1部分:无缝圆管
- 合同诈骗罪起诉状
- 公路工程勘察设计投标方案(技术方案)
评论
0/150
提交评论