wangpengqi的专栏

希望我的博客可以给你带来财富

八皇后问题的非递归解法

用C++实现了八皇后问题的非递归算法。原理很简单,看代码就是了,无须多说
#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;

}

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭