您的位置:首页 > 职场人生

【面试准备】八皇后问题

2014-09-04 16:12 127 查看
seat[i]=j;表示第i行皇后放在第j列位置上
判断是否可以放置 (seat[i]-i)==(seat
-n)||(seat[i]+i)==(seat
+n)||(seat[i]==seat
)
</pre><pre name="code" class="cpp">
</pre><pre name="code" class="cpp">
#include <iostream>
using namespace std;
#define Slove_num 8

int seat[Slove_num];
bool ok(int n);
int count = 0;

void queen(int n){
if(n == Slove_num){
for(int i = 0;i < n; ++i){
cout<<"("<<i<<","<<seat[i]<<")"<<" ";
}
cout<<endl;
count++;
return ;
}
for(int i = 0; i < Slove_num; ++i){
seat
= i;
if(ok(n)){
queen(n+1);
}
}
}

bool ok(int n){
for(int i = 0; i < n; ++i){
if((seat[i]-i)==(seat
-n)||(seat[i]+i)==(seat
+n)||(seat[i]==seat
)){
return false;
}
}
return true;
}

int main(){
queen(0);
cout<<count<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: