zoukankan      html  css  js  c++  java
  • N皇后问题

    N皇后问题,我们在解决N皇后问题的时候,采用搜索的方法,dg记录的是左对角线的截距,udg记录的是右对角线的截距。之后便可以进行dfs进行求解了

    #include <iostream>
    using namespace std;
    #define N 20
    int n;
    bool col[N], dg[N], udg[N];
    char g[N][N];
    void dfs(int u) {
        if(u == n) {
            for(int i = 0; i < n; i++) puts(g[i]);
            putchar('
    ');
        }
        for(int i = 0; i < n; i++) {
            if(!col[i] && !dg[u + i] && !udg[u - i + n]) {
                g[u][i] = 'g';
                col[i] = dg[u + i] = udg[u - i + n] = true; 
                dfs(u + 1);
                col[i] = dg[u + i] = udg[u - i + n] = false; 
                g[u][i] = '.';
            }
        }
    }
    int main() {
        scanf("%d", &n);
        for(int i = 0; i < n; i++)
            for(int j = 0; j < n; j++)
                g[i][j] = '.';
        dfs(0);
        return 0;
    }
    
  • 相关阅读:
    C语言I博客作业08
    作业7
    作业6
    作业5
    作业--4
    java基础学习--I/O流
    刷题记录--[CISCN2019 华北赛区 Day2 Web1]Hack World
    ADB测试Android真机
    sqli-labs通关笔记
    Tensorflow入门
  • 原文地址:https://www.cnblogs.com/littlepage/p/13507344.html
Copyright © 2011-2022 走看看