📄 queuenew.cpp
字号:
//将8个皇后放在一个8行8列的棋盘,使它们互不冲突,
//即不在同一列、不在同一行、不在同一条对角线上。
#include"stdio.h"
char a[9][9];//棋盘矩阵
int up[16],down[17],col[9];//标志数组,为逻辑值,判定位置是否冲突
int total=0;
void print()//打印棋盘
{
int j,i;
printf("\n");
for(i=1;i<=8;i++)
{printf("\n");
for(j=1;j<=8;j++)
printf("%4c",a[i][j]);
}
}
void try1(int i)
{
int j;
for(j=1;j<=8;j++)
if(up[8+i-j]&&down[i+j]&&col[j])
{a[i][j]='Q';//将皇后i放于位置(i,j)
up[8+i-j]=0;
down[i+j]=0;
col[j]=0;
if(i<8) try1(i+1);
else {total++;print();}
a[i][j]='*';//释放位置(i,j)
up[8+i-j]=1;
down[i+j]=1;
col[j]=1;
}
}
void main()
{
int j,i;
for(j=1;j<=15;j++) up[j]=1; //主对角线
for(j=2;j<=16;j++) down[j]=1;//次对角线
for(j=1;j<=8;j++) col[j]=1; //同列
for(i=1;i<=8;i++)//置空棋盘
for(j=1;j<=8;j++)
a[i][j]='*';
print();
printf("\n");
try1(1);//试着将1放在正确位置
printf("\ntotal=%d\n",total);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -