📄 8_queens.cpp
字号:
#include <stdio.h>
static int chessboard[8][8]; ////定义棋盘
static int prow[8]; //列判断
static int a[15]; //左斜行条件组
static int b[15]; //右斜行条件组
static int count=0; //记数
void queen(int line) { //0代表皇后位置
int row,j,k;
for(row=0;row<8;row++) {
if(prow[row]==1 && a[line-row+7]==1 && b[line+row]==1) {
chessboard[line][row]=0;
prow[row]=0;
a[line-row+7]=0;
b[line+row]=0;
if(line<7) {
queen(line+1); //递归
}
else {
count++;
printf("*****NO.%d*****\n",count);
for(k=0;k<8;k++)
for(j=0;j<8;j++) {
printf("%d ",chessboard[k][j]);
if(j==7) printf("\n");
}
printf("***************\n");
}
chessboard[line][row]=1; //回溯
prow[row]=1;
a[line-row+7]=1;
b[line+row]=1;
}
}
}
int main() {
int i,j;
for(i=0;i<8;i++) ////准备棋盘
for(j=0;j<8;j++) {
chessboard[i][j] = 1;
}
for(i=0;i<8;i++) {
prow[i] = 1;
}
for(i=0;i<15;i++) {
a[i] = 1;
}
for(i=0;i<15;i++) {
b[i] = 1;
}
queen(0);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -