用C语言的堆栈结构实现八皇后问题
# include & ltstdlib.h & gt
# include & ltmath.h & gt
int Judge(int *p,int j)
//判断当前棋位是否符合规则,如果符合则返回1,否则返回0;
{
int I;
for(I = 0;我& ltj;i++)
{
if(p[j]==p[i])返回0;
if(abs(p[j]-p[i])==j-i)返回0;
}
返回1;
}
int main()
{
int a[8];//a[i]表示第I行之后的位置(a[3]=0表示第3行在第0列)。
int i=0,j=0,k = 0;
for(a[0]= 0;a[0]& lt;8;j=0,a[j]++)
for(a[++ j]= 0;a[j]& lt;8;j=1,a[j]++)
if(法官(a,j))
for(a[++ j]= 0;a[j]& lt;8;j=2,a[j]++)
if(法官(a,j))
for(a[++ j]= 0;a[j]& lt;8;j=3,a[j]++)
if(法官(a,j))
for(a[++ j]= 0;a[j]& lt;8;j=4,a[j]++)
if(法官(a,j))
for(a[++ j]= 0;a[j]& lt;8;j=5,a[j]++)
if(法官(a,j))
for(a[++ j]= 0;a[j]& lt;8;j=6,a[j]++)
if(法官(a,j))
for(a[++ j]= 0;a[j]& lt;8;a[j]++)
if(法官(a,j))
{ for(I = 0;我& lt8;i++) printf("%d ",a[I]);
printf("%3s "," ");
如果(!(++ k % 7))printf(" \ n ");
}
printf("\n\n%d\n\n ",k);
printf(" \ n请按任意键结束...");
getch();
返回0;
}