八皇后:
算法
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不一样的做者发表了40种不一样的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种计算机语言能够解决此问题。spa
图示:.net
个人解决方案:blog
网上有大量的方法,大部分抽象难以理解,而且有知乎大神整理出了10行代码的版本,一时间惊为天人,众人错愕。如何用 C++ 在 10 行内写出八皇后?你若是看得懂各路大神装的逼,能够关闭本文章了。get
如今给出个人我的版本,算法过程描述的比较详细,而且加入了大量注释,尤为是流程控制方面的注解比较多,方便理解。算法核心部分是基于已定位置的未知位置计算。本次实现方式并不是是效率最高的方式,可是对于刚刚接触这个算法,而又整理不出思路的人来讲,颇有帮助。源码
结果如图:it
源码以下:八皇后io