亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

深入N皇后問題的兩個最高效算法的詳解

2020-01-26 16:09:01
字體:
來源:轉載
供稿:網友
N皇后問題是一個經典的問題,在一個N*N的棋盤上放置N個皇后,每行一個并使其不能互相攻擊(同一行、同一列、同一斜線上的皇后都會自動攻擊)。
一、 求解N皇后問題是算法中回溯法應用的一個經典案例
回溯算法也叫試探法,它是一種系統地搜索問題的解的方法?;厮菟惴ǖ幕舅枷胧牵簭囊粭l路往前走,能進則進,不能進則退回來,換一條路再試。
在現實中,有很多問題往往需要我們把其所有可能窮舉出來,然后從中找出滿足某種要求的可能或最優的情況,從而得到整個問題的解?;厮菟惴ň褪墙鉀Q這種問題的“通用算法”,有“萬能算法”之稱。N皇后問題在N增大時就是這樣一個解空間很大的問題,所以比較適合用這種方法求解。這也是N皇后問題的傳統解法,很經典。
下面是算法的高級偽碼描述,這里用一個N*N的矩陣來存儲棋盤:
1) 算法開始, 清空棋盤,當前行設為第一行,當前列設為第一列
2) 在當前行,當前列的位置上判斷是否滿足條件(即保證經過這一點的行,列與斜線上都沒有兩個皇后),若不滿足,跳到第4步
3) 在當前位置上滿足條件的情形:
在當前位置放一個皇后,若當前行是最后一行,記錄一個解;
若當前行不是最后一行,當前行設為下一行, 當前列設為當前行的第一個待測位置;
若當前行是最后一行,當前列不是最后一列,當前列設為下一列;
若當前行是最后一行,當前列是最后一列,回溯,即清空當前行及以下各行的棋盤,然后,當前行設為上一行,當前列設為當前行的下一個待測位置;
以上返回到第2步
4) 在當前位置上不滿足條件的情形:
若當前列不是最后一列,當前列設為下一列,返回到第2步;
若當前列是最后一列了,回溯,即,若當前行已經是第一行了,算法退出,否則,清空當前行及以下各行的棋盤,然后,當前行設為上一行,當前列設為當前行的下一個待測位置,返回到第2步;
算法的基本原理是上面這個樣子,但不同的是用的數據結構不同,檢查某個位置是否滿足條件的方法也不同。為了提高效率,有各種優化策略,如多線程,多分配內存表示棋盤等。

在具體解決該問題時,可以將其拆分為幾個小問題。首先就是在棋盤上如何判斷兩個皇后是否能夠相互攻擊,在最初接觸這個問題時,首先想到的方法就是把棋盤存儲為一個二維數組,然后在需要在第i行第j列放置皇后時,根據問題的描述,首先判斷是在第i行是否有皇后,由于每行只有一個皇后,這個判斷也可以省略,然后判斷第j列是否有皇后,這個也很簡單,最后需要判斷在同一斜線上是否有皇后,按照該方法需要判斷兩次,正對角線方向和負對角線方向,總體來說也不難。但是寫完之后,總感覺很笨,因為在N皇后問題中這個函數的使用次數太多了,而這樣做效率較差,個人感覺很不爽。上網查看了別人的實現之后大吃一驚,大牛們都是使用一個一維數組來存儲棋盤,在某個位置上是否有皇后可以相互攻擊的判斷也很簡單。具體細節如下:
把棋盤存儲為一個N維數組a[N],數組中第i個元素的值代表第i行的皇后位置,這樣便可以把問題的空間規模壓縮為一維O(N),在判斷是否沖突時也很簡單,首先每行只有一個皇后,且在數組中只占據一個元素的位置,行沖突就不存在了,其次是列沖突,判斷一下是否有a[i]與當前要放置皇后的列j相等即可。至于斜線沖突,通過觀察可以發現所有在斜線上沖突的皇后的位置都有規律即它們所在的行列互減的絕對值相等,即| row 亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产玖玖精品视频| 久久久av电影| 中文字幕无线精品亚洲乱码一区| 亚洲精品国产拍免费91在线| 久久国产视频网站| 成人国产亚洲精品a区天堂华泰| 国产精品揄拍一区二区| 精品久久久久久中文字幕| 欧美性猛交xxxx偷拍洗澡| 中文字幕亚洲自拍| 日韩精品视频在线播放| 成人综合国产精品| 成人春色激情网| 亚洲欧洲午夜一线一品| 亚洲香蕉在线观看| 久久精品99久久香蕉国产色戒| 国产日韩欧美电影在线观看| 一区二区三区回区在观看免费视频| 中文字幕日韩专区| 久久久国产91| 亚洲无av在线中文字幕| 欧美午夜视频在线观看| 日韩精品一区二区视频| 91av免费观看91av精品在线| 欧美xxxx18国产| 日韩电影在线观看永久视频免费网站| 亚洲乱码国产乱码精品精| 亚洲精品一区久久久久久| 久久久久久久久久久国产| 中文字幕亚洲欧美日韩2019| 精品国产一区二区三区久久狼黑人| 成人日韩av在线| 国产成人在线亚洲欧美| 亚洲a中文字幕| 国产成人精品视频在线| 欧美激情一区二区三区高清视频| 亚洲欧美国产精品| 不卡av电影院| 亚洲精选在线观看| 欧美日韩爱爱视频| 成人免费网站在线| 日本精品一区二区三区在线播放视频| 精品视频偷偷看在线观看| 欧美在线性爱视频| 国产精品视频999| 欧美成人在线影院| 国产成人+综合亚洲+天堂| 一区二区三区视频观看| 久久电影一区二区| 欧美乱大交xxxxx另类电影| 久久久久成人网| 一区二区在线免费视频| 欧美激情精品久久久久久蜜臀| 91精品国产91久久久久久吃药| 一区二区三区国产视频| 亚洲国产精品一区二区久| 欧美精品xxx| 九九热视频这里只有精品| 国产精品你懂得| 久久九九有精品国产23| 欧美午夜宅男影院在线观看| 96国产粉嫩美女| 亚洲精品久久久一区二区三区| 欧美精品久久久久久久免费观看| 秋霞成人午夜鲁丝一区二区三区| 亚洲国模精品一区| 欧美一区二区三区精品电影| 国产精品三级久久久久久电影| 久久噜噜噜精品国产亚洲综合| 久久久久久18| 18性欧美xxxⅹ性满足| 亚洲综合在线小说| 日韩精品日韩在线观看| 亚洲第一精品久久忘忧草社区| 欧美一级高清免费播放| 亚洲一区免费网站| 日韩精品极品视频免费观看| 91九色视频导航| 日韩视频在线观看免费| 在线视频欧美日韩| 奇米成人av国产一区二区三区| 久久九九精品99国产精品| 国产精品香蕉在线观看| 久久亚洲欧美日韩精品专区| 在线不卡国产精品| 欧美性一区二区三区| 国产日韩一区在线| 国产乱肥老妇国产一区二| 国产香蕉精品视频一区二区三区| 国产精品中文字幕在线观看| 岛国av一区二区在线在线观看| 日韩av黄色在线观看| 久久人人爽人人| 久久久免费av| 久久综合色88| 久久久久一本一区二区青青蜜月| 久久深夜福利免费观看| 91欧美日韩一区| 国产精品美女主播在线观看纯欲| 97久久精品人人澡人人爽缅北| 欧美另类第一页| 亚洲一区二区三区成人在线视频精品| 日韩中文在线中文网三级| 久久久视频免费观看| 国产一区二区香蕉| 亚洲欧美制服中文字幕| 久久久噜噜噜久久| 精品亚洲国产成av人片传媒| 91影院在线免费观看视频| 神马久久桃色视频| 伊人精品在线观看| 中文字幕精品一区二区精品| 色香阁99久久精品久久久| 久久九九国产精品怡红院| 国产美女精品免费电影| 狠狠躁天天躁日日躁欧美| 色樱桃影院亚洲精品影院| 亚洲xxx大片| 久久免费精品日本久久中文字幕| 亚洲高清一二三区| 亚洲精品影视在线观看| 亚洲第一区在线| 国产精品自拍偷拍视频| 国外成人性视频| 国产精品一区二区三区成人| 国产成人一区二区三区电影| 欧美成人中文字幕在线| 欧美一级免费看| 亚洲人高潮女人毛茸茸| 在线日韩精品视频| 亚洲精品国精品久久99热一| 国产精品视频网| 国产精品视频永久免费播放| 成人h猎奇视频网站| 国产99视频在线观看| 欧美日韩中文在线观看| 国产精品综合久久久| 中文字幕亚洲欧美日韩高清| 午夜精品福利视频| 中文字幕日韩电影| 奇米一区二区三区四区久久| 5566成人精品视频免费| 亚洲免费视频观看| 久久久国产精品x99av| 中文字幕精品久久久久| 中文字幕亚洲综合| 亚洲网站在线观看| 97视频在线免费观看| 成人动漫网站在线观看| 性色av一区二区三区红粉影视| 亚洲成人动漫在线播放| 亚洲一区美女视频在线观看免费| 国产精品白丝jk喷水视频一区| 日韩av一区在线观看| 日韩av免费网站| 久久久精品美女| 成人激情免费在线| 亚洲电影免费观看| 国产精品老女人精品视频| 国产精品久久不能| 91亚洲国产成人精品性色| 亚洲第一在线视频| 欧美综合在线第二页| 国产精品女主播|