八皇后问题,一维数组实现

#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;
}



posted @ 2013-07-13 10:46  ruo_yu  阅读(1045)  评论(0编辑  收藏  举报