⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8_queens.cpp

📁 8_queens 经典8皇后问题 希望能为刚入门的朋友提供些许帮助
💻 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 + -