八皇后问题
#include<stdio.h>int a[8][8]={0};
fun(int n,int a[8][8])
{
int i,j,m,p,q;
if(n=7)return 1;
for(i=0;i<=7;i++)
{
p=n;q=i;
while(p>=0&&q>=0)
{if(a[p--][q--]!=0)break;}/*检测左上方是否有皇后*/
if(!(p==0||q==0))continue;
p=n;q=i;
while(p<=7&&q<=7)
{if(a[p++][q++]!=0)break;}/*右下方*/
if(!(p==7||q==7))continue;
p=n;q=i;
while(p>=0&&p<=7&&q>=0&&q<=7)
{if(a[p++][q--]!=0)break;}/*左下方*/
if(!(p==0||p==7||q==0||q==7))continue;
p=n;q=i;
while(p>=0&&p<=7&&q>=0&&q<=7)
{if(a[p--][q++]!=0)break;}/*右上方*/
if(!(p==0||p==7||q==0||q==7))continue;
for(j=0;j<=7;j++)
if(a[i][j]==0&&a[j][i]==0)continue;/*上下左右*/
if(j==7)
a[n][i]=1;
break;
}
fun(n+1,a);
}
main()
{
int n=0,i,j;
for(n=0;n<=7;n++)
{
if(fun(n,a)==1)
{
for(i=0;i<=7;i++)
{ for(j=0;j<=7;j++)
printf("%5d",a[i][j]);
printf("\n");}
printf("\n");
}
}
}
在国际象棋中,把八个皇后放在棋盘上,使它们中任何一个都无法攻击其余的皇后,这个程序那些地方有问题。。。求大虾赐教