用C语言的堆栈结构实现八皇后问题

# include & ltstdio.h & gt

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

}