八皇后回溯法代码问题求指点
#include<stdio.h>int checkqueen(int array[][8],int x,int y)//是否自对角线上
{
int i,j;
int r,t;
i=x;
j=y;
r=x-1;
t=y-1;
array[i-1][j-1]=1;
while(i!=0&&j!=0)
{
if(array[i-1][j-1]=1)
return 0;
i--;
j--;
}
while(r!=0&&t!=8)
{
if(array[r-1][t+1]=1)
return 0;
r--;
t++;
}
return 1;
}
int checkrow(int array[][8],int x,int y)
{
int row ;
for(row=x;row>=0;row++)// 是否在同一列上
{
if(array[row][y]=1)
return 0;
}
return 1;
}
int placequeen(int s[][8],int array[][8],int x)
{
int i,j,t;
if(x>=7)
{
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
printf("%d ",s[i][j]);
}
printf("\n");
}
}
else
{
for(t=0;t<8;t++)
{
array[x][t]=1;
if(checkqueen(array,x,t) && checkrow(array,x,t))
placequeen(s,array,x+1);
else
{
array[x][t]=0;
}
}
}
return 1;
}
void main ()
{
int sl[8][8]={0};
int eq[8][8]={0};
placequeen(sl,eq,0);
}