posts - 3, comments - 0, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

八皇后问题的非递归解法

Posted on 2011-01-16 17:10 树袋大雄 阅读(431) 评论(0)  编辑 收藏 引用

牛人用C++实现了八皇后问题的非递归算法。

使用了stl,stl的algorithm就是好用啊!
原文出处: http://wangcong.org/blog/?p=267

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


 


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理