您的位置:首页 > 产品设计 > UI/UE

【leetcode】N-Queens II

2013-10-04 00:10 309 查看
class Solution {
public:

int count;

bool visited[1000];//visited[k]表示第visited[k]列已经放置过Queue了,不可再用
int col[1000];//col[0]表示第0行中,第col[0]列中放置了一个Queue

bool canPlace(int i,int j)
{
for(int k=0;k<i;k++)
{
if(abs(k-i)==abs(col[k]-j))//(k,col[k])与(i,j)不能呈45度或135度角
return false;
}
return true;
}

void dfs(int level,int n)
{
if(level==n)
{
count++;
return;
}

for(int k=0;k<n;k++)//从0到n-1枚举列
{
if((visited[k]==false)&&canPlace(level,k))
//该列没放过Queue,且对角线上也没有过Queue,又因为level代表行,所以该行之前也未有过Queue
{
visited[k]=true;
col[level]=k;
dfs(level+1,n);
visited[k]=false;
}
}

}

int totalNQueens(int n) {
// Note: The Solution object is instantiated only once and is reused by each test case.
count=0;
memset(visited,false,sizeof(visited));
dfs(0,n);
return count;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: