亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

回溯法之二---8皇后問題

系統(tǒng) 2221 0

回溯法之二---8皇后問題

八皇后問題是一個古老而著名的問題,是回溯算法的典型例題。該問題是十九世紀(jì)著名的數(shù)學(xué)家高斯1850年提出:在8X8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處于同一行、同一列或同一斜線上.
問題分析:
第一步 定義問題的解空間
這個問題解空間就是8個皇后在棋盤中的位置.
第二步 定義解空間的結(jié)構(gòu)
可以使用8*8的數(shù)組,但由于任意兩個皇后都不能在同行,我們可以用數(shù)組下標(biāo)表示
行,數(shù)組的值來表示皇后放的列,故可以簡化為一個以維數(shù)組x[9]。
第三步 以深度優(yōu)先的方式搜索解空間,并在搜索過程使用剪枝函數(shù)來剪枝
根據(jù)條件:x[i] == x[k]判斷處于同一列
abs(k-i) == abs(x[k]-x[i]判斷是否處于同一斜線
我們很容易寫出剪枝函數(shù):
Cpp代碼
  1. bool canPlace( int k){
  2. for ( int i=1;i<k;i++){
  3. //判斷處于同一列或同一斜線
  4. if (x[i]==x[k]||abs(k-i)==abs(x[k]-x[i])) return false ;
  5. }
  6. return true ;
  7. }

然后我們按照回溯框架一,很容易寫出8皇后的回溯代碼:
Cpp代碼
  1. void queen( int i){
  2. if (i>8){
  3. print();
  4. return ;
  5. }
  6. for ( int j=1;j<=8;j++){
  7. x[i]=j; //記錄所放的列
  8. if (canPlace(i))queen(i+1);
  9. }
  10. }

整個代碼:
Cpp代碼
  1. #include<iostream>
  2. #include<cmath>
  3. using namespace std;
  4. int x[9];
  5. void print(){
  6. for ( int i=1;i<=8;i++)
  7. cout<<x[i]<< "" ;
  8. cout<<endl;
  9. }
  10. bool canPlace( int k){
  11. for ( int i=1;i<k;i++){
  12. //判斷處于同一列或同一斜線
  13. if (x[i]==x[k]||abs(k-i)==abs(x[k]-x[i]))
  14. return false ;
  15. }
  16. return true ;
  17. }
  18. void queen( int i){
  19. if (i>8){
  20. print();
  21. return ;
  22. }
  23. for ( int j=1;j<=8;j++){
  24. x[i]=j;
  25. if (canPlace(i))queen(i+1);
  26. }
  27. }
  28. int main(){
  29. queen(1);
  30. return 0;
  31. }

回溯法之二---8皇后問題


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本亚洲一区二区 | 亚洲一级毛片欧美一级说乱 | 亚洲综合久久久久久中文字幕 | 99视频在线观看视频一区 | 香蕉成人啪国产精品视频综合网 | 欧美一欧美一区二三区性 | 国产精品国产亚洲精品看不卡 | 毛片网页| 综合另类 | 久热精品香蕉在线视频 | 久久大伊人| 亚洲一区日韩 | 看日本真人一一级特黄毛片 | 久热免费在线观看 | 国产一区二区三区四区在线 | 欧美日韩国产精品 | 免费国产成人高清在线观看视频 | 美女视频黄的全i免费 | 成人毛片免费在线观看 | 69午夜| 青青久草 | 天天做人人爱夜夜爽2020 | 欧美日韩国产另类一区二区三区 | 视频在线一区二区三区 | 免费黄色a | 关婷哪一级毛片高清免费看 | 久久精品夜夜夜夜夜久久 | 欧美狠狠入鲁的视频极速 | 免费看欧美一级特黄a大片一 | 看一级毛片 | 国产一级成人毛片 | 久久精品国产2020观看福利色 | 交换国产精品视频一区 | 国产呦系列免费 | 99爱在线精品视频网站 | 婷婷在线视频观看 | 久久精品啪啪嗷嗷叫 | 成人性生免费视频 | 五月在线视频 | 日韩精品综合 | 人人鲁免费播放视频人人香蕉 |