回溯之八皇后问题
程序员文章站
2024-02-20 14:08:46
...
八皇后问题就在于 8*8的格子,一个皇后所在的行,以及过这点的两条斜线 如下图
#include<stdio.h>
int tot=0;
int C[]={-1};//棋盘初始化
void search(int cur)//从0,0 点开始放皇后
{
int i,j;
if(cur==8)//8个皇后放完了 总数++
tot++;
else
for(i=0;i<8;i++)
{
int ok=1;
C[cur]=i;
for(j=0;j<cur;j++)//一次检查前面的行上的皇后 是否与现在的冲突
if(C[cur]==C[j]||cur-C[cur]==j-C[j]||cur+C[cur]==j+C[j])
//检查三条线上是否有皇后
{
ok=0;break;
}
if(ok)
search(cur+1);//放下一个皇后 在下面的行上
}
}
int main()
{
search(0);
printf("%d",tot);
}
上一篇: 纯css绘制三角形
下一篇: Java 异常的捕获与处理详解