Algorithm,dfs,N Queens Problem,N皇后,8皇后

今早起来写了个N皇后

#include <iostream>
#define abs(i) ((i) < 0 ? -(i) : (i))
const int N = 8;
int board[N] = {-1};
bool ok(int row)
{
    if (row == 0) return true;
    for (int i = 0; i < row; ++i)
    {
        if (((row - i) == abs(board[row] - board[i])) ||
            board[row] - board[i] == 0 )
            return false;
    }
    return true;
}
void dfs(int row)
{
    if (row == N)
    {
        for (int i = 0; i < N; ++i)
            std::cout << board[i] << " ";
        std::cout << std::endl;
    }
    else
    {
        for (int i = 0; i < N; ++i)
        {
            board[row] = i;
            if (!ok(row)) continue;
            else dfs(row + 1);
        }
    }
}
int main()
{
    dfs(0);
    return 0;
}

一次成功,娃哈哈

http://codepad.org/3IJflVrb

原文地址:https://www.cnblogs.com/threef/p/3199813.html