问题描述:~省略
实现算法:
// EightQueen.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <math.h> using namespace std; //count为八个皇后 int count = 8; //数组rst含义,下标代表行号,数组元素值为列号 //存储的是八个皇后的位置(i,a[i]) int rst[8] = {0}; //sum计算解决方案数目 int sum = 0; //查看在n行是否可以放下一个皇后 //分析可知,若对于两个点(a,b)和(c,d)是不符合八皇后 //的排列方式,那么有|a-c|等于|b-d|(对角线),或者a等于c //或者b等于d,归纳而言就是对于本题中的数组rst而言需要 //有rst[a]等于rst[c],所以对于place而言只要有这两个条件 //符合,那么这个置放就是非法的,返回false,否则返回true bool place(int n) { for( int i=0; i<n; i++ ) if( abs(i-n)==abs(rst[i]-rst[n]) || rst[i]==rst[n] ) return false; return true; } //该函数是实现放置第n个皇后 void EightQueen(int n) { //已经放完,输出该种解决方案 if(n >= ::count) { cout << "第" << ++sum << "种方案:" << endl; for(int i=0; i<::count; i++ ) cout << "(" << i << "," << rst[i] << "),"; cout << endl; } else { //对于第n行放第n个皇后,需要从 //该行的第一列遍历至最后一列 for(int i=0; i<::count; i++ ) { //第n行放在地i列 rst[n] = i; //若符合则放下一个皇后到下一行 if( place(n) ) EightQueen(n+1); } } } int _tmain(int argc, _TCHAR* argv[]) { EightQueen(0); cout << "共有" << sum << "种解决方案!" << endl; getchar(); return 0; }
第1种方案: (0,0),(1,4),(2,7),(3,5),(4,2),(5,6),(6,1),(7,3), 第2种方案: (0,0),(1,5),(2,7),(3,2),(4,6),(5,3),(6,1),(7,4), 第3种方案: (0,0),(1,6),(2,3),(3,5),(4,7),(5,1),(6,4),(7,2), 第4种方案: (0,0),(1,6),(2,4),(3,7),(4,1),(5,3),(6,5),(7,2), 第5种方案: (0,1),(1,3),(2,5),(3,7),(4,2),(5,0),(6,6),(7,4), 第6种方案: (0,1),(1,4),(2,6),(3,0),(4,2),(5,7),(6,5),(7,3), 第7种方案: (0,1),(1,4),(2,6),(3,3),(4,0),(5,7),(6,5),(7,2), 第8种方案: (0,1),(1,5),(2,0),(3,6),(4,3),(5,7),(6,2),(7,4), 第9种方案: (0,1),(1,5),(2,7),(3,2),(4,0),(5,3),(6,6),(7,4), 第10种方案: (0,1),(1,6),(2,2),(3,5),(4,7),(5,4),(6,0),(7,3), 第11种方案: (0,1),(1,6),(2,4),(3,7),(4,0),(5,3),(6,5),(7,2), 第12种方案: (0,1),(1,7),(2,5),(3,0),(4,2),(5,4),(6,6),(7,3), 第13种方案: (0,2),(1,0),(2,6),(3,4),(4,7),(5,1),(6,3),(7,5), 第14种方案: (0,2),(1,4),(2,1),(3,7),(4,0),(5,6),(6,3),(7,5), 第15种方案: (0,2),(1,4),(2,1),(3,7),(4,5),(5,3),(6,6),(7,0), 第16种方案: (0,2),(1,4),(2,6),(3,0),(4,3),(5,1),(6,7),(7,5), 第17种方案: (0,2),(1,4),(2,7),(3,3),(4,0),(5,6),(6,1),(7,5), 第18种方案: (0,2),(1,5),(2,1),(3,4),(4,7),(5,0),(6,6),(7,3), 第19种方案: (0,2),(1,5),(2,1),(3,6),(4,0),(5,3),(6,7),(7,4), 第20种方案: (0,2),(1,5),(2,1),(3,6),(4,4),(5,0),(6,7),(7,3), 第21种方案: (0,2),(1,5),(2,3),(3,0),(4,7),(5,4),(6,6),(7,1), 第22种方案: (0,2),(1,5),(2,3),(3,1),(4,7),(5,4),(6,6),(7,0), 第23种方案: (0,2),(1,5),(2,7),(3,0),(4,3),(5,6),(6,4),(7,1), 第24种方案: (0,2),(1,5),(2,7),(3,0),(4,4),(5,6),(6,1),(7,3), 第25种方案: (0,2),(1,5),(2,7),(3,1),(4,3),(5,0),(6,6),(7,4), 第26种方案: (0,2),(1,6),(2,1),(3,7),(4,4),(5,0),(6,3),(7,5), 第27种方案: (0,2),(1,6),(2,1),(3,7),(4,5),(5,3),(6,0),(7,4), 第28种方案: (0,2),(1,7),(2,3),(3,6),(4,0),(5,5),(6,1),(7,4), 第29种方案: (0,3),(1,0),(2,4),(3,7),(4,1),(5,6),(6,2),(7,5), 第30种方案: (0,3),(1,0),(2,4),(3,7),(4,5),(5,2),(6,6),(7,1), 第31种方案: (0,3),(1,1),(2,4),(3,7),(4,5),(5,0),(6,2),(7,6), 第32种方案: (0,3),(1,1),(2,6),(3,2),(4,5),(5,7),(6,0),(7,4), 第33种方案: (0,3),(1,1),(2,6),(3,2),(4,5),(5,7),(6,4),(7,0), 第34种方案: (0,3),(1,1),(2,6),(3,4),(4,0),(5,7),(6,5),(7,2), 第35种方案: (0,3),(1,1),(2,7),(3,4),(4,6),(5,0),(6,2),(7,5), 第36种方案: (0,3),(1,1),(2,7),(3,5),(4,0),(5,2),(6,4),(7,6), 第37种方案: (0,3),(1,5),(2,0),(3,4),(4,1),(5,7),(6,2),(7,6), 第38种方案: (0,3),(1,5),(2,7),(3,1),(4,6),(5,0),(6,2),(7,4), 第39种方案: (0,3),(1,5),(2,7),(3,2),(4,0),(5,6),(6,4),(7,1), 第40种方案: (0,3),(1,6),(2,0),(3,7),(4,4),(5,1),(6,5),(7,2), 第41种方案: (0,3),(1,6),(2,2),(3,7),(4,1),(5,4),(6,0),(7,5), 第42种方案: (0,3),(1,6),(2,4),(3,1),(4,5),(5,0),(6,2),(7,7), 第43种方案: (0,3),(1,6),(2,4),(3,2),(4,0),(5,5),(6,7),(7,1), 第44种方案: (0,3),(1,7),(2,0),(3,2),(4,5),(5,1),(6,6),(7,4), 第45种方案: (0,3),(1,7),(2,0),(3,4),(4,6),(5,1),(6,5),(7,2), 第46种方案: (0,3),(1,7),(2,4),(3,2),(4,0),(5,6),(6,1),(7,5), 第47种方案: (0,4),(1,0),(2,3),(3,5),(4,7),(5,1),(6,6),(7,2), 第48种方案: (0,4),(1,0),(2,7),(3,3),(4,1),(5,6),(6,2),(7,5), 第49种方案: (0,4),(1,0),(2,7),(3,5),(4,2),(5,6),(6,1),(7,3), 第50种方案: (0,4),(1,1),(2,3),(3,5),(4,7),(5,2),(6,0),(7,6), 第51种方案: (0,4),(1,1),(2,3),(3,6),(4,2),(5,7),(6,5),(7,0), 第52种方案: (0,4),(1,1),(2,5),(3,0),(4,6),(5,3),(6,7),(7,2), 第53种方案: (0,4),(1,1),(2,7),(3,0),(4,3),(5,6),(6,2),(7,5), 第54种方案: (0,4),(1,2),(2,0),(3,5),(4,7),(5,1),(6,3),(7,6), 第55种方案: (0,4),(1,2),(2,0),(3,6),(4,1),(5,7),(6,5),(7,3), 第56种方案: (0,4),(1,2),(2,7),(3,3),(4,6),(5,0),(6,5),(7,1), 第57种方案: (0,4),(1,6),(2,0),(3,2),(4,7),(5,5),(6,3),(7,1), 第58种方案: (0,4),(1,6),(2,0),(3,3),(4,1),(5,7),(6,5),(7,2), 第59种方案: (0,4),(1,6),(2,1),(3,3),(4,7),(5,0),(6,2),(7,5), 第60种方案: (0,4),(1,6),(2,1),(3,5),(4,2),(5,0),(6,3),(7,7), 第61种方案: (0,4),(1,6),(2,1),(3,5),(4,2),(5,0),(6,7),(7,3), 第62种方案: (0,4),(1,6),(2,3),(3,0),(4,2),(5,7),(6,5),(7,1), 第63种方案: (0,4),(1,7),(2,3),(3,0),(4,2),(5,5),(6,1),(7,6), 第64种方案: (0,4),(1,7),(2,3),(3,0),(4,6),(5,1),(6,5),(7,2), 第65种方案: (0,5),(1,0),(2,4),(3,1),(4,7),(5,2),(6,6),(7,3), 第66种方案: (0,5),(1,1),(2,6),(3,0),(4,2),(5,4),(6,7),(7,3), 第67种方案: (0,5),(1,1),(2,6),(3,0),(4,3),(5,7),(6,4),(7,2), 第68种方案: (0,5),(1,2),(2,0),(3,6),(4,4),(5,7),(6,1),(7,3), 第69种方案: (0,5),(1,2),(2,0),(3,7),(4,3),(5,1),(6,6),(7,4), 第70种方案: (0,5),(1,2),(2,0),(3,7),(4,4),(5,1),(6,3),(7,6), 第71种方案: (0,5),(1,2),(2,4),(3,6),(4,0),(5,3),(6,1),(7,7), 第72种方案: (0,5),(1,2),(2,4),(3,7),(4,0),(5,3),(6,1),(7,6), 第73种方案: (0,5),(1,2),(2,6),(3,1),(4,3),(5,7),(6,0),(7,4), 第74种方案: (0,5),(1,2),(2,6),(3,1),(4,7),(5,4),(6,0),(7,3), 第75种方案: (0,5),(1,2),(2,6),(3,3),(4,0),(5,7),(6,1),(7,4), 第76种方案: (0,5),(1,3),(2,0),(3,4),(4,7),(5,1),(6,6),(7,2), 第77种方案: (0,5),(1,3),(2,1),(3,7),(4,4),(5,6),(6,0),(7,2), 第78种方案: (0,5),(1,3),(2,6),(3,0),(4,2),(5,4),(6,1),(7,7), 第79种方案: (0,5),(1,3),(2,6),(3,0),(4,7),(5,1),(6,4),(7,2), 第80种方案: (0,5),(1,7),(2,1),(3,3),(4,0),(5,6),(6,4),(7,2), 第81种方案: (0,6),(1,0),(2,2),(3,7),(4,5),(5,3),(6,1),(7,4), 第82种方案: (0,6),(1,1),(2,3),(3,0),(4,7),(5,4),(6,2),(7,5), 第83种方案: (0,6),(1,1),(2,5),(3,2),(4,0),(5,3),(6,7),(7,4), 第84种方案: (0,6),(1,2),(2,0),(3,5),(4,7),(5,4),(6,1),(7,3), 第85种方案: (0,6),(1,2),(2,7),(3,1),(4,4),(5,0),(6,5),(7,3), 第86种方案: (0,6),(1,3),(2,1),(3,4),(4,7),(5,0),(6,2),(7,5), 第87种方案: (0,6),(1,3),(2,1),(3,7),(4,5),(5,0),(6,2),(7,4), 第88种方案: (0,6),(1,4),(2,2),(3,0),(4,5),(5,7),(6,1),(7,3), 第89种方案: (0,7),(1,1),(2,3),(3,0),(4,6),(5,4),(6,2),(7,5), 第90种方案: (0,7),(1,1),(2,4),(3,2),(4,0),(5,6),(6,3),(7,5), 第91种方案: (0,7),(1,2),(2,0),(3,5),(4,1),(5,4),(6,6),(7,3), 第92种方案: (0,7),(1,3),(2,0),(3,2),(4,5),(5,1),(6,6),(7,4), 共有92种解决方案!