著名n皇后问题。
n个皇后摆放在N x N的棋盘格中,使得横、竖和两个对角线方向均不会同时出现两个皇后。
#include<bits/stdc++.h>
using namespace std;
#define Max 100
int n,p[Max],flag[Max]={false},counts = 0;
void generatep(int index){
if(index==n+1){
counts++;
return;
}
for(int x=1;x<index;x++)
{
bool f = true;
if(flag[x]==false){
for(int d = 1;d<=n;d++)
{
if(abs(index-d)==abs(p[d]-x)){
f=false;
break;
}
}
if(f){
for(int x=1;x<=n;x++){
if(flag[x]==false){
p[index] =x;
flag[x]=true;
generatep(index+1);
flag[x] =false;
}
}
}
}
1. List item
}
}
int main(){
n=3;
generatep(1);
return 0;
}