力扣 OJ 52. N皇后 II

二次信任 提交于 2020-01-28 17:56:36

n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。

上图为 8 皇后问题的一种解法。

给定一个整数 n,返回 n 皇后不同的解决方案的数量。

示例:

输入: 4
输出: 2
解释: 4 皇后问题存在如下两个不同的解法。
[
 [".Q..",  // 解法 1
  "...Q",
  "Q...",
  "..Q."],

 ["..Q.",  // 解法 2
  "Q...",
  "...Q",
  ".Q.."]
]

 

 

代码:

int m, sum;
int list_[100];

void place(int row)
{
	if (row == m)sum++;
	for (int i = 0; i < m; i++)
	{
		bool flag = true;
		for (int j = 0; j < row; j++)
			if (list_[j] == i || list_[j] - j == i - row || list_[j] + j == i + row)flag = false;
		if (flag)
		{
			list_[row] = i;
			place(row + 1);
		}
	}
}

class Solution {
public:
	int totalNQueens(int n) {
		m = n;
		sum = 0;
		place(0);
		return sum;
	}
};

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!