八皇后算法的另一种实现(c#版本)

Posted 毛小亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了八皇后算法的另一种实现(c#版本)相关的知识,希望对你有一定的参考价值。

八皇后:

  八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种计算机语言可以解决此问题。

 

图示:

  

 

我的解决方案:

  网上有大量的方法,大部分抽象难以理解,并且有知乎大神整理出了10行代码的版本,一时间惊为天人,众人错愕。如何用 C++ 在 10 行内写出八皇后?你如果看得懂各路大神装的逼,可以关闭本文章了。

  

  现在给出我的个人版本,算法过程描述的比较详细,并且加入了大量注释,尤其是流程控制方面的注解比较多,方便理解。算法核心部分是基于已定位置的未知位置计算。本次实现方式并非是效率最高的方式,但是对于刚刚接触这个算法,而又整理不出思路的人来说,很有帮助。

 

结果如图:

  

  

 

 

 

源码如下八皇后

 

以上是关于八皇后算法的另一种实现(c#版本)的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 面试题 08.12. 八皇后----回溯篇7

八皇后(JAVA算法实现)

八皇后问题遗传算法实现(python版)

八皇后问题Python实现

算法入门经典-第七章 例题7-2 八皇后问题

八皇后问题算法详解