第1次实验——八皇后及N皇后问题
来源:互联网 发布:上海然旭网络怎么样 编辑:程序博客网 时间:2024/04/28 01:28
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种方法可以解决此问题。 请编程实现八皇后问题,并把92种解的前三种解输出到屏幕(8*8的二维矩阵,Q代表皇后,X代表空)。并把此问题的求解过程延伸到N皇后问题。
#include <conio.h>#include <math.h>#include <stdlib.h>#include <stdio.h>#include <iostream.h>#define QUEENS 8int iCount = 0;int Site[QUEENS]; void Queen(int n);void Output();int IsValid(int n); void main(){ cout<<" "<<"八皇后的解法:"<<endl;cout<<" "<<"-------------------------------------"<<endl; Queen(0); } void Queen(int n){ int i; if(n == QUEENS){ Output(); return; } for(i = 1 ; i <= QUEENS ; i++) {Site[n] = i; if(IsValid(n)) Queen(n + 1); } }int IsValid(int n){int i; for(i = 0 ; i < n ; i++){if(Site[i] == Site[n]) return 0; if(abs(Site[i] - Site[n]) == (n - i)) return 0; } return 1;} void Output() { if(++iCount<=3){ cout<<"No."<<iCount<<endl; for(int i = 0 ; i < QUEENS ; i++){ for( int j = 1 ;j <= QUEENS ; j++)if(j==Site[i])cout<<"1 ";elsecout<<"0 ";cout<<endl;} } }
0 0
- 第1次实验——八皇后及N皇后问题
- 第1次实验——NPC问题(回溯算法、聚类分析) N皇后的问题
- 八皇后问题—>n皇后问题
- 第一次实验--八皇后及N皇后问题
- 第一次实验:八皇后及N皇后问题
- 第一次实验 八皇后及N皇后问题
- 八皇后及n皇后问题
- 八皇后及n皇后问题
- 八皇后及N皇后问题
- 八皇后及n皇后问题
- 回溯法—八皇后问题(N皇后)
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- 第一次实验——八皇后问题
- 第一次实验——八皇后问题
- 实验1---N皇后问题
- SICP 2.42 “八皇后问题”及“n皇后问题”
- 八皇后问题(N皇后问题)
- 好的产品经理需要哪些素质?
- CodeForces 416A
- Quartz2D(1)
- ICMP协议,ping和traceroute
- 汽车O2O成大风口 易到用车估值30亿美金
- 第1次实验——八皇后及N皇后问题
- BASH-数据流重导向
- 利用jquery对动态生成的文本进行求和计算
- 编程基础知识——Java相关的“编码”问题
- Oracle BI Publisher 企业版在WIN7下的安装(BI Publisher Enterprise Edition)
- Android应用开发——使用AsyncTask异步更新UI界面
- QImage 32bit转8bit
- I2C的总线电容
- D3 数据驱动的javascript类库