zoukankan      html  css  js  c++  java
  • 8皇后问题(dfs)

    #include<iostream>

    using namespace std;

    //八皇后问题

    //思路:8*8的dfs,求结果个数问题(外加上条件减支即可)

    //不用开二维数组

    int a[8] = {0};  //a数组用来记录8行中每行皇后的位置,比如a[2]=3就表示第二行的皇后在第三个位置

    int sumNum = 0;

    void DFS(int i){

        if(i == 8) {    //i表示深度: 遍历了0——7

            sumNum = sumNum + 1; //结果数+1

            return;

        }

        //(i, j) 坐标满足条件

        for(int j = 0; j < 8; j++) {

            bool flag = true;

            // check 选项(剪枝条件)

            for(int k = 0; k < i; k++) {

                if( j == a[k] || i - k == j - a[k] || i - k == a[k] - j ) {

                    //不在同一列

                    //不在对角线:即横纵坐标差的绝对值不能相同

                    flag = false;//减支

                }

            }

            if(flag) {

                a[i] = j;  //记录这一行皇后的位置

                DFS(i + 1);  //深度+1

            }

        }

    }

    int main() {

        DFS(0);

        cout<<sumNum;

        return 0;

    }

    这篇文章,是又一个故事的结束...
    lazy's story is continuing.
  • 相关阅读:
    Spell checker
    Power Network
    ACM Computer Factory
    Asteroids
    Golang: 并发抓取网页内容
    Golang: 抓取网页内容
    Golang: 读取文件并统计内容
    Golang: 接收命令行输入
    React: 有状态组件生成真实DOM结点
    React: 无状态组件生成真实DOM结点
  • 原文地址:https://www.cnblogs.com/Hello-world-hello-lazy/p/13773731.html
Copyright © 2011-2022 走看看