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;
}
};
温习一下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;
}
};
相关文章推荐
- wxWidgets界面开发工具wxFormBuilder的使用
- Ultra-QuickSort(归并排序+逆序数)
- Code Sign error: No matching provisioning profile found: Your build settings specify a provisioni...
- Get-AzureVM : Requested value 'enable' was not found
- QT UI编程细节(待续)
- 由UITableView reloadData后引起的界面布局问题分析
- 基于Arduino的桌面激光雕刻机
- Sysinternals Suite 2014.08.18
- 关于使用<s:property value="">形式取得 数据库图片地址的注意事项
- 页面优化指南(easyui页面优化方案
- 关于升级程序版本时version与build修改的问题
- 一个简单的WPF MVVM实例
- 怎么滴,就不喜欢拍照了呢?
- 与WebBrowser相关的GUID值的定义
- executeQuery()是干什么用的?实现什么功能啊?
- GUID和UUID、CLSID、IID 区别及联系
- WM_QUERYENDSESSION消息
- UITableView详解(UITableViewCell(一)重中之重)
- Access restriction: The type * is not accessible due to restrict,报错问题.
- x-requested-with 请求头 区分ajax请求还是普通请求