八皇后问题

此处为非递归版本

 

#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;

}

posted @ 2016-01-18 15:19  hi,daring  阅读(159)  评论(0编辑  收藏  举报