八皇后:
算法
八皇后問題,是一個古老而著名的問題,是回溯算法的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾於1848年提出:在8×8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。 高斯認爲有76種方案。1854年在柏林的象棋雜誌上不一樣的做者發表了40種不一樣的解,後來有人用圖論的方法解出92種結果。計算機發明後,有多種計算機語言能夠解決此問題。spa
圖示:.net
個人解決方案:blog
網上有大量的方法,大部分抽象難以理解,而且有知乎大神整理出了10行代碼的版本,一時間驚爲天人,衆人錯愕。如何用 C++ 在 10 行內寫出八皇后?你若是看得懂各路大神裝的逼,能夠關閉本文章了。get
如今給出個人我的版本,算法過程描述的比較詳細,而且加入了大量註釋,尤爲是流程控制方面的註解比較多,方便理解。算法核心部分是基於已定位置的未知位置計算。本次實現方式並不是是效率最高的方式,可是對於剛剛接觸這個算法,而又整理不出思路的人來講,頗有幫助。源碼
結果如圖:it
源碼以下:八皇后io