【回溯法】n皇后问题

一。递归回溯

#include 
using namespace std;

#define N 8
int sum=0;
int *x=new int[N+1];

bool place(int k)
{
	int i;
	for(i=1; iN)
	{
		for(i=1; i<=N; i++)
			cout<


二。迭代回溯

#include 
using namespace std;

#define N 8
int sum=0;
int *x=new int[N+1];

bool place(int k)
{
	int i;
	for(i=1; i0)
	{
		x[k]+=1;//当前列加1的位置开始搜索
		while((x[k]<=N) && !place(k))//当前列位置是否满足条件
			x[k]+=1;//不满足条件,继续搜索下一个位置

		if(x[k]<=N)//存在满足条件的列
		{
			if(k==N)//是最后一个皇后,完成搜索
			{
				for(i=1; i<=N; i++)
					cout<



 

你可能感兴趣的:(数据结构及算法)