北航计算机机试13简单版八皇后
如题,确实是简化了不少,连思路都说出来了….
按这个思路来的话
#include<stdio.h>
#include<string.h>
int main()
{
int a[8][8];
char m;
int i,j,k;
int l,r;
int flag=0;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
a[i][j]=0;
}
}
for(i=0;i<8;i++)
{
m=getchar();
if(m!='*')
{
int n=m-48;
for(j=0;j<8;j++) a[i][j]=1;//row
for(j=i+1;j<8;j++) a[j][n-1]=1;//col
for(j=i,k=n-1;j>0 &&k>0;j--,k--){}
l=j; r=k;
for(l,r;l<=7 && r<=7; l++,r++) a[l][r]=1;//rightdown up
for(j=i,k=n-1;j>0 &&k<7;j--,k++){}
l=j; r=k;
for(l,r;l<8 && r>=0; l++,r--) a[l][r]=1;//leftdown up
}
}
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
if(a[i][j]==0)
{
printf("%d\n",j+1);
flag=1;
}
}
}
if(flag==0)
{
printf("NO ANSWER\n");
}
return 0;
}
每次都栽在越界上,代码不规范,导致总是越界出现错误,在行列对角线赋值时,想当然以为只赋值下面的就好..
简单版的,都被我写麻烦了
正常的八皇后,是用回溯剪枝来写
后天写!!!!!!!!!!!!!