天天看點

八皇後問題(牛人非遞歸版)

原文連結:《八皇後問題的非遞歸解法》

     想不服都不行,實在是太牛的代碼,詭異的算法思路,出神入化的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();

本文轉自Phinecos(洞庭散人)部落格園部落格,原文連結:http://www.cnblogs.com/phinecos/archive/2008/11/04/1326614.html,如需轉載請自行聯系原作者

繼續閱讀