tiewadhd的博客

长风破浪会有时,直挂云帆挤沧海

【八皇后】问题

算法

回溯的思想

代码

来源于《算法竞赛入门经典》
#include<iostream>
using namespace std;

int n, tot = 0, c[20];
void search(int cur){
    if (cur>n)tot++;//递归边界,只要走到这里,所有皇后必然不冲突
    else for (int i = 1; i <= n; i++){
        int ok = 1;
        c[cur] = i;//尝试把第cur行的皇后放在第i列
        for (int j = 1; j < cur; j++)//检查是否和前面的皇后冲突
        if (c[cur] == c[j] || cur - c[cur] == j - c[j]
            || cur + c[cur] == j + c[j]){
            ok = 0;
            break;
        }
        if (ok)search(cur + 1);//如果合法,则继续递归
    }
}
int main(){
    cin >> n;
    search(1);
    cout << tot << endl;
    return 0;
}

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tiewadhd/article/details/52346686
文章标签: 八皇后 回溯 算法
个人分类: 算法入门
想对作者说点什么? 我来说一句

八皇后问题C++简单实现

2014年03月21日 4KB 下载

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

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