nqueen.h

来自「《数据结构(c语言版)》配套光盘 学习数据库不可缺少的辅助材料」· C头文件 代码 · 共 43 行

H
43
字号
#include<iostream>
#include<cmath>
using namespace std;

bool Place (int k, int i, int *x)
{
	for (int j=0; j<k; j++) //从第0行开始到第k-1行依次检查,一旦冲突函数返回值为false
	{
		if (x[j]==i || abs(x[j]-i)==abs(j-k)) 
			return false;
	}
		return true;

}


void Queens (int k, int n, int *x) //排第k+1个皇后
{
	for (int i=0; i<n; i++)
	{
		if (Place(k,i,x))
		{
			x[k]=i;
			if (k==n-1) //已排完所有皇后时输出
			{
				cout<<"*****************\n";
				for (int j=0; j<n; j++)
               {
					for (int a=1; a<=x[j]; a++)
						cout<<"# ";
					cout<<"Q ";
					for (int b=1; b<=n-1-x[j]; b++)
						cout<<"# ";
					cout<<endl;
				}
				cout<<"*****************\n";
				
			}
			else
				Queens(k+1, n, x); //排第k+2个皇后
		}
}

⌨️ 快捷键说明

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