📄
字号:
八皇后问题
#include "stdio.h"
int a[8],b[24],c[24],d[24];
int i, k,t=0;
void print()
{
t++;
printf(" %d",t);
for (k=0;k<8;k++)
printf(" %d",a[k]);
printf("\n");
}
void try(int i)
{
int j;
for (j=0;j<8;j++)
{/*每个皇后都有8种可能位置*/
if ((b[j]==0) &&(c[i+j]==0)&& (d[i-j]==0))/*判断位置是否冲突*/
{
a[i]=j;/*摆放皇后*/
b[j]=1;/*宣布占领第J行*/
c[i+j]=1; /*占领两个对角线*/
d[i-j]=1;
if (i<8)
try(i+1);/*8个皇后没有摆完,递归摆放下一皇后*/
else
print();/*完成任务,打印结果*/
b[j]=0; /*回溯*/
c[i+j]=0;
d[i-j]=0;
}
}
}
void main()
{
for( k=0;k<24;k++)
{/*数据初始化*/
b[k]=0;
c[k]=0;
d[k]=0;
}
try(1);/*从第1个皇后开始放置*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -