八皇后问题(牛人非递归版)

简介:
原文链接:《八皇后问题的非递归解法》

     想不服都不行,实在是太牛的代码,诡异的算法思路,出神入化的STL技巧。。。

复制代码
#include <cmath>
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
const int MAX = 8;

vector<int> board(MAX);

void show_result()
{
    for(size_t i = 0; i < board.size(); i++)
        cout<<"("<<i<<","<<board[i]<<")";
    cout<<endl;
}

int check_cross()
{
    for(size_t i = 0; i < board.size()-1; i++)
    {
        for(size_t j = i+1; j < board.size(); j++)
        {
            if((j-i) == (size_t)abs(board[i]-board[j]))
                return 1;
        }
    }
    return 0;
}

void put_chess()
{
    while(next_permutation(board.begin(), board.end()))
    {
        if(!check_cross())
        {
            show_result();
        }
    }
}

int main()
{
    for(size_t i =0; i < board.size(); i++)
        board[i] = i;
    put_chess();
    return 0;
}
复制代码

本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2008/11/04/1326614.html,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
索引
八皇后问题
八皇后问题
168 0
|
10月前
1213:八皇后问题
1213:八皇后问题
|
11月前
汉诺塔+小青蛙跳台阶---《递归》
汉诺塔+小青蛙跳台阶---《递归》
|
12月前
|
人工智能
|
12月前
|
算法 索引
从三道经典的leetcode题掌握二分法
前言 二分法是典型的搜索算法,其主要运用于有序序列中寻找目标值。其思路非常简单,就是不断比较搜索区间的中间值与目标值,当中间值等于目标值则结束搜索,如果中间值大于目标值,则继续搜索左半区间,反之搜索右半区间。 总结下,二分法就是在搜索过程中不断地将搜索区间减半,直到搜索到目标值或者搜索区间为空集。
|
人工智能
好题分享
好题分享
63 0
|
机器学习/深度学习 算法
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
|
机器学习/深度学习 C++
【力扣·每日一题】1036. 逃离大迷宫 (C++ bfs 思维)
【力扣·每日一题】1036. 逃离大迷宫 (C++ bfs 思维)
73 0
【力扣·每日一题】1036. 逃离大迷宫 (C++ bfs 思维)
对于八皇后问题的详细说明
八皇后为解决问题说明,题目在主页
52 0
对于八皇后问题的详细说明