八皇后

Posted can丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了八皇后相关的知识,希望对你有一定的参考价值。

八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九 世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使 其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上, 问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作 者发表了40种不同的解,后来有人用图论的方法解出92种结果

 

 

 

 

#include <iostream>
using namespace std;

int c[20], n=8, cnt=0;
void print(){
for(int i=0; i<n; ++i){
for(int j=0; j<n; ++j){
if(j == c[i]) cout<<"1 ";
else cout<<"0 ";
}
cout<<endl;
}
cout<<endl;
}
void search(int r){
if(r == n){
print();
++cnt;
return;
}
for(int i=0; i<n; ++i){
c[r] = i;
int ok = 1;
for(int j=0; j<r; ++j)
if(c[r]==c[j] || r-j==c[r]-c[j] || r-j==c[j]-c[r]){
ok = 0;
break;
}
if(ok) search(r+1);
}
}
int main(){
search(0);
cout<<cnt<<endl;
return 0;
}

以上是关于八皇后的主要内容,如果未能解决你的问题,请参考以下文章

八皇后问题

八皇后问题

八皇后问题算法详解

Python用迭代(yield)和递归解决八皇后问题

八皇后究竟有多少种解法?怎么解?

八皇后