日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

8皇后以及N皇后算法探究,回溯算法的JAVA实现,递归方案(一)

發布時間:2024/1/23 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8皇后以及N皇后算法探究,回溯算法的JAVA实现,递归方案(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

八皇后問題,是一個古老而著名的問題,是回溯算法的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾于1848年提出:在8×8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處于同一行、同一列或同一斜線上,問有多少種擺法。 高斯認為有76種方案。1854年在柏林的象棋雜志上不同的作者發表了40種不同的解,后來有人用圖論的方法解出92種結果。計算機發明后,有多種計算機語言可以解決此問題。---------以上節選自百度百科。

 

算法思考,初步思路:

構建二維int或者short型數組,內存中模擬棋盤

chess[r][c]=0表示:r行c列沒有皇后,chess[r][c]=1表示:r行c列位置有一個皇后

從第一行第一列開始逐行擺放皇后

依題意每行只能有一個皇后,遂逐行擺放,每行一個皇后即可

擺放后立即調用一個驗證函數(傳遞整個棋盤的數據),驗證合理性,安全則擺放下一個,不安全則嘗試擺放這一行的下一個位置,直至擺到棋盤邊界

當這一行所有位置都無法保證皇后安全時,需要回退到上一行,清除上一行的擺放記錄,并且在上一行嘗試擺放下一位置的皇后(回溯算法的核心)

當擺放到最后一行,并且調用驗證函數確定安全后,累積數自增1,表示有一個解成功算出

驗證函數中,需要掃描當前擺放皇后的左上?

總結

以上是生活随笔為你收集整理的8皇后以及N皇后算法探究,回溯算法的JAVA实现,递归方案(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。