N皇后问题
日子美美哒 2017-10-15 04:15:13 麻烦请大神帮忙看看问题出在哪,谢谢
#include<stdio.h>
#include<math.h>
#define Max 4
int queen[Max+1]={0};
int count=0;
int IsValid(int m);
void print();
void place(int m);
void main()
{
int m=1;
place(m);
printf("%d",count);
}
void place(int m)
{
for(int i=1;i<=Max;i++)
{
queen[m]++;
if(queen[m]<=Max)
{
if(IsValid(m))
{
if(m==Max)
{
print();
count++;
}
else
place(m+1);
}
}
else
{
queen[m]=queen[m]-Max;
}
}
queen[m]=0;
place(m-1);
}
int IsValid(int m)
{
int i;
for(i=1;i<m;i++)
if(queen[m]==queen[i]||(m-i)==abs(queen[m]-queen[i]))
return 0;
return 1;
}
void print()
{
int i,j;
for(i=1;i<=Max;i++)
{
for(j=1;j<=Max;j++)
if(queen[i]==j)
printf(" 1");
else
printf(" 0");
printf("\n");
}
printf("\n");
}