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

首頁 > 編程 > C++ > 正文

C++如何實現八皇后問題的方

2020-02-24 14:31:04
字體:
來源:轉載
供稿:網友

本文實例展示了C++實現八皇后問題的方法,是數據結構與算法中非常經典的一個算法。分享給大家供大家參考之用。具體方法如下:

一般在八皇后問題中,我們要求解的是一個8*8的國際象棋棋盤中,放下8個皇后且互相不能攻擊的排列總數?;屎蟮墓舴秶鸀檎?,整列,以及其斜對角線。

由于皇后的攻擊范圍特性,注定我們每行只能放下一個皇后,于是我們要做的只是逐行放下皇后。八皇后問題是回溯法的典型問題。這里我們用的方法很簡單:

從第一行開始逐個檢索安全位置擺放皇后,一旦有安全位置則考慮下一行的安全位置。如果發現某行沒有安全位置,則返回上一行繼續檢索安全位置;如果發現在最后一行找到了安全位置則輸出整個棋盤。

原理很簡單,整個程序中表現了這個思想的函數是void Solve()

下面是實現的代碼:

?

 //八皇后問題的實現#include <iostream>#include <string>using namespace std;//QueenChess類聲明class QueenChess{   public:       QueenChess();     //構造函數       void Solve();     //求解八皇后問題,并給出放置成功的棋盤總個數    private:       string chessState[8];     //用于存放棋盤狀態       int solves;          //八個皇后放置成功的棋盤解的總個數       bool SafeJudge(int row,int col) const;  //判斷位置(row,col)是否安全       void PlaceQueen(int row);         //在第row行放置一個皇后       void DrawChess() const;          //打印八個皇后放置成功的棋盤 };//構造函數,將棋盤初始化QueenChess::QueenChess(){   solves=0;   int i=0,j=0;   for(;i<8;++i)   chessState[i]="--------";}//求解八皇后問題,并給出放置成功的棋盤總個數void QueenChess::Solve(){   //從第0行開始放置皇后   PlaceQueen(0);   cout<<"/n八皇后問題總共的解的個數是:"<<solves<<endl; }//在第row行的各列放置皇后void QueenChess::PlaceQueen(int row){   //窮盡第row行的所有列   for(int col=0;col<8;col++)   {       if(SafeJudge(row,col))       {           //位置(row,col)安全,則放一皇后            chessState[row][col]='Q';           //若還沒有放到第八行,則嘗試下一行           if(row<7)            PlaceQueen(row+1);           //已經放置了八個皇后,打印出成功的棋盤,并將解數加1           else           {             solves++;             DrawChess();           }        }//end if       //不安全,將該處的皇后拿走,嘗試下一列位置       chessState[row]="--------";    } }//判斷是否(row,col)是安全位置bool QueenChess::SafeJudge(int row,int col) const{   int qRow,qCol;   //檢查前面各行,看與前面的皇后是否發生攻擊   for(qRow=0;qRow<row;qRow++)   {      string rowState=chessState[qRow];      //尋找第qRow行放置皇后的列數      qCol=rowState.find("Q");      //如果兩個皇后在同一行、同一列或兩條對角線上,則說明該位置不安全      if(qRow==row||qCol==col||(qCol-qRow)==(col-row)||(qCol+qRow)==(col+row))         return false;    } //end if   return true;}//打印成功的棋盤void QueenChess::DrawChess() const{   int i,j;   cout<<"/n八皇后問題的第"<<solves<<" 個解為:"<<endl;   cout<<" 0 1 2 3 4 5 6 7"<<endl;   for(i=0;i<8;++i)   {      cout<<i<<" ";      for(j=0;j<8;++j)      cout<<chessState[i][j]<<" ";      cout<<endl;   } //end for   //每打印一個成功的八皇后棋盤,暫停一下   //system("pause"); }//main函數進行測試 int main(){  QueenChess chess;  chess.Solve();  system("pause");  return 0; }

這篇文章主要介紹了C++實現八皇后問題的方法,是數據結構與算法中常見的一個經典算法,希望本文所述實例對大家C++算法設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色综合久久悠悠| 91久久夜色精品国产网站| 国产午夜精品免费一区二区三区| 国产精品视频网站| 欧美日韩一二三四五区| 欧美www视频在线观看| 久久久久久久一| 成人性生交大片免费看视频直播| 久久综合伊人77777蜜臀| 日韩欧美国产激情| 欧美日韩美女在线观看| 在线看片第一页欧美| 国产日韩欧美在线视频观看| 日韩精品小视频| 91国产高清在线| 91精品国产成人www| 日韩福利视频在线观看| 国产精品视频中文字幕91| 欧洲亚洲在线视频| 日韩精品视频在线免费观看| 青草青草久热精品视频在线网站| 欧美在线观看一区二区三区| 欧美一区二区三区免费观看| 日韩国产一区三区| 高清欧美性猛交xxxx| 97超级碰碰碰久久久| 欧美成人黑人xx视频免费观看| 久久久久久久亚洲精品| 亚洲欧美日本伦理| 日韩精品视频观看| 欧美高清视频在线观看| 欧美激情一区二区三区在线视频观看| 亚洲人a成www在线影院| 日韩av资源在线播放| 国产精品久久久久久久av大片| 国产精品女人网站| 亚洲第一区在线观看| 色视频www在线播放国产成人| 欧美大成色www永久网站婷| 青青草成人在线| 亚洲色图国产精品| 中文字幕国产亚洲| 成人网欧美在线视频| 精品国产鲁一鲁一区二区张丽| 97国产精品久久| 亚洲少妇中文在线| 国产啪精品视频网站| 播播国产欧美激情| www欧美xxxx| 78色国产精品| 欧美极品第一页| 国产成人高潮免费观看精品| 日韩暖暖在线视频| 国产成人精品视频在线观看| 日韩中文字幕av| 国产精品丝袜久久久久久不卡| 欧美国产精品人人做人人爱| 欧美日韩午夜剧场| 日韩精品高清在线观看| 久久久999国产精品| 久久精品国产一区| 欧美最猛性xxxx| 久久夜色精品国产亚洲aⅴ| 亚洲国产古装精品网站| 美女av一区二区| 日韩中文字幕在线播放| 亚洲精品美女在线观看| 国产成人免费91av在线| 色播久久人人爽人人爽人人片视av| 日韩精品极品在线观看| 91精品国产91久久久久久久久| 日韩精品在线视频美女| 欧美一级视频免费在线观看| 亚洲第一天堂av| 欧美成人午夜视频| 国产精品国产三级国产aⅴ浪潮| 久久影院在线观看| 国产精品劲爆视频| 日韩亚洲一区二区| 欧美裸体视频网站| 欧美国产激情18| 亚洲天堂av在线免费| 久久天天躁狠狠躁夜夜爽蜜月| 国产精品三级网站| 国产精品久久久久久av福利| 国产精品av在线| 成人免费大片黄在线播放| 日韩欧美aⅴ综合网站发布| 欧美情侣性视频| 亚洲一区中文字幕在线观看| www.美女亚洲精品| 影音先锋日韩有码| 性日韩欧美在线视频| 欧美疯狂性受xxxxx另类| 国产精品揄拍一区二区| 一区二区欧美亚洲| 日韩av在线网站| 久久久久久国产精品久久| 欧美激情亚洲综合一区| 欧美特黄级在线| 欧美精品久久久久| 国产精品成人免费电影| 欧美黑人一区二区三区| 欧美激情啊啊啊| 日韩精品一区二区三区第95| 亚洲美女自拍视频| 国产精品三级网站| 亚洲网站视频福利| 2019中文字幕在线观看| 国产免费成人av| 欧美亚洲国产成人精品| 欧美区在线播放| 国产女人18毛片水18精品| 国产亚洲精品一区二区| 国产精品久久97| 91久久精品国产91久久| 欧美国产日韩一区二区三区| 97超碰色婷婷| 国产在线日韩在线| 亚洲人成在线免费观看| 日韩风俗一区 二区| 欧美激情视频网址| 欧美另类在线观看| 国产精品免费观看在线| 国产精品欧美在线| 国产在线视频2019最新视频| 亚洲人成网站色ww在线| 在线看国产精品| 在线亚洲欧美视频| 国产精品入口尤物| 中文字幕视频一区二区在线有码| 青青草原成人在线视频| 色与欲影视天天看综合网| 久久男人av资源网站| www.日韩.com| 午夜免费久久久久| 亚洲天堂开心观看| 欧美精品18videos性欧| 亚洲日本欧美日韩高观看| 国产日产亚洲精品| 国产精品69久久| 日韩高清免费观看| 91久久嫩草影院一区二区| 51ⅴ精品国产91久久久久久| 精品人伦一区二区三区蜜桃网站| 91av在线免费观看视频| 视频在线观看99| 国产精品美女av| 国产精品丝袜一区二区三区| 日韩精品极品毛片系列视频| 丁香五六月婷婷久久激情| 国产精品色午夜在线观看| 成人天堂噜噜噜| 欧美极品少妇xxxxⅹ免费视频| 2019国产精品自在线拍国产不卡| 日韩欧美有码在线| 狠狠色香婷婷久久亚洲精品| 九九热精品视频在线播放| 一本久久综合亚洲鲁鲁| 尤物九九久久国产精品的特点| 国产精品视频最多的网站| 欧美激情视频在线观看| 欧美亚洲激情在线| 久青草国产97香蕉在线视频|