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

N皇后问题的局面个数 N-Queens II

2014-03-09 16:07 274 查看
对于N皇后问题,有多少种可能的局面呢?

温习一下backtrack吧。

代码:

class Solution {
public:
bool isValid(int board[], int n, int row, int col)
{
for(int i=0;i<row;i++) //判断当前位置(row, col)是否和之前行的元素有冲突
{
if(board[i] == col)
return false;
if(abs(board[i] - col) == abs(i - row)) //行跟行之差 == 列跟列之差
return false;
}
return true;
}

void fun(int board[],int n, int row)
{
if(row == n)
{
count++;
return;
}
for(int i=0;i<n;i++)
{
if(isValid(board, n, row, i))
{
board[row] = i;
fun(board, n, row+1);
}
}
}

int count = 0;

int totalNQueens(int n) {
int board
;
memset(board, 0, sizeof(board));
fun(board, n, 0);
return count;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: