八皇后问题的c语言描述

没有做优化,纯回溯,自己写的。

八皇后问题的c语言描述:

#include 
#include 

int a[9]={0,0,0,0,0,0,0,0,0},count=0;

void f(int n);//核心
void op();//这个是找到满足条件的解的时候输出
int ct(int n);//这个函数判断是否有冲突

int main()
{
 f(1);
 printf("\n共有%d个解",count);
 return 0;
}

void f(int n)
{

  int i;
  if(n==9)
  {
  count++;
  op();
  }
  else
  {
    for(i=1;i<=8;i++)
 {
   a[n]=i;
   if(n==1)
   {
        a[n]=i;
     f(n+1);
   }
 else
    if(ct(n)==1)
    f(n+1);//满足条件才排下一位

 }
  }

}

void op()
{
  int i;
  printf("\n");
  for(i=1;i<=8;i++)
  {
  printf("%d行 %d列\n",i,a[i]);
  }
  return;
}

int ct(int n)
{
 int i;
 for(i=1;i  if(a[n]==a[i] || fabs(a[n]-a[i])==fabs(n-i))
  return 0;

 return 1;
}

Leave a Reply

Your email address will not be published.