|
8Queen 简易程序
void mysearch(int i); 搜索第I个皇后放在第I行的哪一列
{ int j,k;
if (i>=8) 输出A数组
else for(k=0;k<=7;k++)
if 能放下 {a[i]=k;mysearch(i+1);}
}
bool canplace (i,j) 能放下函数,判断第I行能否放在第J列
{
for(k=0;k<i;k++)
{if (a[k]==j) canplace=false 表示有某个和他一列
if (i-k)/(j-a[k])=+-1 canpalce=false}
}
一个位置被占用,符合三条线的不能被选
1、列 若a[i]=x,则所有的B1[x] 不能被选
2、正对角线 向右下
a[i]=x a[k]=y 请问这四个变量有什么关系 8+i-x=8+k-y b2[i-x]不能被选 纠正一下 偏移问题
3、反对角线 向右上
a[i]=x a[k]=y 请问这四个变量有什么关系 i+x=k+y b3[i+x]不能被选
int b1[8],b2[15],b3[15]
|
|