标签:arch == 国际象棋 不能 namespace cout 方法 nbsp 多少
八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九 世纪著名的数学家高斯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;
}
标签:arch == 国际象棋 不能 namespace cout 方法 nbsp 多少
原文地址:http://www.cnblogs.com/lozjl/p/7758052.html