八皇后问题,一维数组实现
#include "stdio.h"
#include "math.h"
int queen[11]={0},coun;
void DFS(int num);
int check(int p);
int main()
{
coun=0;
DFS(0);
printf("%d\n",coun);
return 0;
}
void DFS(int num)
{
int p;
if(num==8)
{
coun++;
return ;
}
for(p=0;p<8;p++)
{
queen[num]=p; //用一维数组存皇后摆放的位置
if(!check(num))
DFS(num+1);
}
return ;
}
int check(int num)
{
int i;
for(i=0;i<num;i++)
{
if(fabs(queen[i]-queen[num])==fabs(num-i) || queen[i]==queen[num]) //遍历已摆放好的皇后,看两个皇后间是否会有冲突。
return 1;
}
return 0;
}
浙公网安备 33010602011771号