八皇后问题 [回溯]

#include<iostream>
#include<cstring>
#include<algorithm>
#include<string>
int n, p[9], hashtable[9] = { 0 },num = 0;
using namespace std;
void digui(int indexrow)
{
	if (indexrow == n + 1)
	{
		num++;
		return;
	}
	for (int column = 1; column <= n; column++)
	{
		if (hashtable[column] == false)
		{
			bool flag = true;
			for (int row = 1; row < indexrow; row++)
			{
				if (abs(indexrow-row) == abs(column - p[row]))
				{
					flag = false;
					break;
				}
			}
			if (flag)
			{
				p[indexrow] = column;
				hashtable[column] = true;
				digui(indexrow + 1);
				hashtable[column] = false;
			}
		}
	}
}
int main()
{
	n = 8;
	digui(1);
	cout << num << endl;
}

posted @ 2020-07-08 22:03  _Hsiung  阅读(35)  评论(0编辑  收藏  举报