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

📄 queen.cpp

📁 自己写的一些小程序 用c实现的数据结构 包括树
💻 CPP
字号:

#include "stdafx.h"
#include "queen.h"

int step[64];//64是最大的棋盘大小,step储存了每一列上皇后的行号
int current;
int count;


void displayQueen(int n){
	count++;
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			if(i==step[j])
				printf("%c ",char(1));
			else
				printf("%c ",char(2));
		}
		printf("\n");
	}
	printf("\n");
}

//皇后位置合法判定
bool putQueenOK(int l){
	int up,down;
	up = down = l;
	for(int i=current-1;i>=0;i--){
		up--;
		down++;
		int cur = step[i];//当前列皇后位置
		if(cur==l||cur==up||cur==down)
			return false;
	}
	return true;

}
//主递归算法
void mainQueen(int _n){
	//递归结束条件
	if (current>_n)
		return;

	int i;
	for(i=0;i<_n;i++){
		if(putQueenOK(i)){
			step[current] = i;
			if(current==_n-1){
				displayQueen(_n);
				current--;
				return;
			}
			current++;
			mainQueen(_n);
		}
	}
	current--;
}



//主程序,事实上用来接收n,n表示皇后问题的规模
void queen(int n){
	current=0;
	count =0;
	mainQueen(n);
	printf("共有%d种布局\n",count);
	printf("按任意键结束");
	getchar();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -