zoukankan      html  css  js  c++  java
  • 回溯法——求解N皇后问题



    问题描写叙述

     

        八皇后问题是十九世纪著名数学家高斯于1850年提出的。问题是:在8*8的棋盘上摆放8个皇后。使其不能互相攻击,即随意的两个皇后不能处在允许行。同一列,或允许斜线上。

    能够把八皇后问题拓展为n皇后问题,即在n*n的棋盘上摆放n个皇后,使其随意两个皇后都不能处于同一行、同一列或同一斜线上。

     

     

    问题分析

     

        我们以最简单的4皇后问题分析,显然,为了使皇后不相互攻击,首先考虑每一行仅仅能放一个皇后,我们以X[1,2,3….N]代表此问题的解数组,X[N]代表在第N行第X[N]列放了一个皇后,比如,X[2]=1代表在第2行第1列放了一个皇后.然后考虑,在第X[k]位上,什么时候会出现皇后相互攻击的情况



    问题解决


        大致描写叙述:以四皇后为例。我们以一个表格来描写叙述我们放置皇后的过程:


      



        


    如上所看到的,一旦出现本行全部位置都不能放置皇后的情况时,我们要回溯到上一行,又一次调整上一行的皇后的位置。



    伪代码解读



           首先是推断能否够放置皇后的代码:





     

          接下来是放置皇后的过程:










  • 相关阅读:
    MySQL用户
    python -- 中
    Python -- 上
    Zabbix导入数据库时报错
    chmod无执行权限
    编译安装Tengine
    Nginx的调度算法
    nginx--第三方模块echo
    ngx_http_headers_module
    nginx---隐藏或添加后端服务器的信息
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6812916.html
Copyright © 2011-2022 走看看