问题提出
在n*n的棋盘上放置彼此不受攻击的n个皇后,按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于在n*n格的棋盘上放置n个皇后,任何2个皇后不放在同一行或同一列或同一斜线上。
#include<stdio.h>
#include<math.h>
int main(){
int temp;
int count=0;
int num[8];
for(int i=0;i<pow(8,8);i++){
temp=i;
for(int j=0;j<8;j++){
num[j]=temp%8;
temp/=8;
}
int flag=1;
for(int k=0;k<8;k++){
for(int j=k+1;j<8;j++){
if(num[j]==num[k]||(abs(k-j)==abs(num[k]-num[j]))){
flag=0;
break;
}
}
}
if(flag==1)
count++;
}
printf("%d\n",count);
return 0;
}