码迷,mamicode.com
首页 > 其他好文 > 详细

【leetcode】N-queens II

时间:2014-06-01 18:24:45      阅读:398      评论:0      收藏:0      [点我收藏+]

标签:algorithm   leetcode   面试题   算法   

问题:

返回N皇后问题解的个数。

分析:

详见 N-queens

实现:

 bool nextPermutation(vector<int> &num)
{
	int i = num.size() - 1;
	while (i >= 1)
	{
		if(num[i] > num[i - 1])
		{
			--i;
			int ii = num.size() - 1;
			while (ii > i && num[ii] <= num[i]) --ii;
			if(ii > i)
			{
				swap(num[i], num[ii]);
				reverse(num.begin() + i + 1, num.end());
				return true;
			}
		}
		else
			--i;
	}
    return false;
}

bool check(vector<int> &grids)
{
	int len = grids.size();
	for (int i = 0; i < len; ++i)
		for (int j = i + 1; j < len; ++j)
		{
			if(abs(i - j) == abs(grids[i] - grids[j]))
				return false;
		}
	return true;
}
int totalNQueens(int n) {
	if(n < 1)
		return 0;
	if(n == 1) 
		return 1;
	int total = 0;
	//init the girds.
	vector<int> grids(n,0);
	for (int i = 0; i < n; ++i)
	{
		grids[i] = i;
	}

	while (nextPermutation(grids))
	{
		if(check(grids))
			total++;
	}
	return total;
}


【leetcode】N-queens II,布布扣,bubuko.com

【leetcode】N-queens II

标签:algorithm   leetcode   面试题   算法   

原文地址:http://blog.csdn.net/shiquxinkong/article/details/27967045

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!