- 13
- 0
- 约1.93千字
- 约 5页
- 2018-03-12 发布于河南
- 举报
实验十n皇后问题
算法设计与分析实验报告
姓名:杨勇涛
班级:计科102
一、实验名称:n皇后问题
时间:2012年4月25日,星期三,第四节
地点:12#311
二、实验目的及要求
在n*n格的棋盘上放置彼此不受攻击的n皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列后统一斜线上的棋子。N皇后问题等价于在n*n格的棋盘上放置n个皇后,任何2个皇后不放在同一行同一列或同一列统统一些线上。
三、实验环境
VC++
四、实验内容
从键盘上输入n皇后的数目,输出所有的结果
五、算法描述及实验步骤
N×N皇后问题的求解过程就是一个试探回逆的过程。如图-1
(图1-1)
1、首先查找第一行的可放位置,第一行全部可以放,那么我们就先将第一个皇后放在(0,0)点。
(图1-2)
2、再查找第二行,由于第一行的(0,0)已经放了皇后,故第二行的(1,0)和(1,1)都能放皇后了,可放的就是(1,2)和(1,3)点,在(1,2)放上皇后。
(图1-3)
3、再查找第三行,查找所以发现第三行没有可放的位置了,回逆到第二行讲皇后放到(1,3)再查找第3行。如果还不行,就回到第一行将第一行的皇后放人下一个可放的点,依次类推,查找N×N上的所以可放的位置,直到第一行所以位置被放完,输出结果。
4、根据上面的规律可以发现,对于一个皇后放在坐标(x,y),它的下一行位置为(x-1,y)(x,y)(x+1,y)的坐标都不能再放皇后。我们用一个数组来存放本行能放皇后的点。用循环来查找上面行对本行的影响
#include math.h
#include iostream
using namespace std;
bool valid(int i,int j);//判断安置元素的合法性
void trial(int i); //递归安置元素
void print(); //显示布局
int q; //皇后数
int *a; //存储布局元素
int count = 0; //合法布局的序号
int main(int argc, char* argv[])
{
cout请输入皇后数:endl;
cinq;
a = new int[q*q];
for(int j=0;jq*q;j++)
a[j] = 0;
trial(0);
cout布局完毕endl;
return 0;
}
void trial(int i) //递归安置元素
{
if(i=q)
print();
else
for(int j=0;jq;j++)
{
a[i*q+j] = 1;
if(valid(i,j))
trial(i+1);
a[i*q+j] = 0;
}
}
bool valid(int i,int j) //判断安置元素的合法性
{
bool b=true;
for(int i1=0;i1i;i1++)
for(int j1=0;j1q;j1++)
if(a[i1*q+j1]==1)
{
if(j1==j)//判断是否在同一列
b = false;
else if(abs(i-i1)==abs(j-j1))//判断是否在对角线
b = false;
}
return b;
}
void print() //显示布局
{
count++;
cout第 count 种布局:endl;
for(int m=0;mq;m++)
{
for(int n=0;nq;n++)
{
couta[m*q+n] ;
}
coutendl;
}
cout----------------------------------------endl;
}
您可能关注的文档
- 新闻失实研究第一章.ppt
- 新目标七年级科学(上)试卷.doc
- 新版PEP三上Unit 4 单元分析.docx
- 新课标高考数学二轮专题复习讲义专题八 不等式.doc
- 大学生艺术团团干自荐表.doc
- 新概念二测试5-12.doc
- 新课教学案:第二节离子反应(第二课时).doc
- 大学生学习情况社会调查.doc
- 新课标人教高练习卷平面向量.doc
- 韩城实业对外宣传管理制度.doc
- 2026年安全防御培训《应急响应》模拟试卷含答案解析.docx
- 2026新疆兵团市政轨道交通(集团)有限公司化工专业项目安全负责人招聘1人考试参考试题及答案解析.docx
- 2026辽宁大连理工大学分析测试中心电镜样品制备技术助理招聘1人(自聘)考试参考试题及答案解析.docx
- 南昌市东湖区融媒体中心招聘时政记者、新媒体编辑考试参考试题及答案解析.docx
- 2025至2030中国自动收缩包装机行业深度研究及发展前景投资评估分析.docx
- 延川县(2025年)公职人员考试时事政治考试试题(附含答案).docx
- 延安市延长县(2025年)招聘警务辅助人员考试真题及答案.docx
- 110kV及以上电力电缆电气验收主要内容及要求.pptx
- APP用户授权使用合同.docx
- 就业指导能力强化.pptx
最近下载
- 《洁净室施工及验收规范》(GB50591-2010).pdf VIP
- 钻井平台钻前工程初步设计-道路.pdf VIP
- 中国法制史试题及答案完整版 .pdf VIP
- 蓝色云南大学顶部导航栏复试模板.pptx VIP
- 湖北工程学院新技术学院《高等数学A》2025-2026学年期末考试试卷(A)卷.docx VIP
- GB 55006-2021 钢结构通用规范.docx VIP
- GB 55002-2021 建筑与市政工程抗震通用规范.docx VIP
- GB 55001-2021 工程结构通用规范.docx VIP
- GB50068-2018_建筑结构可靠性设计统一标准.docx VIP
- 执行结构设计.pdf VIP
原创力文档

文档评论(0)