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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

递归算法学习系列之八皇后问题

發布時間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 递归算法学习系列之八皇后问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.引子

?? 中國有一句古話,叫做“不撞南墻不回頭",生動的說明了一個人的固執,有點貶義,但是在軟件編程中,這種思路確是一種解決問題最簡單的算法,它通過一種類似于蠻干的思路,一步一步地往前走,每走一步都更靠近目標結果一些,直到遇到障礙物,我們才考慮往回走。然后再繼續嘗試向前。通過這樣的波浪式前進方法,最終達到目的地。當然整個過程需要很多往返,這樣的前進方式,效率比較低下。

2.適用范圍

?? 適用于那些不存在簡明的數學模型以闡明問題的本質,或者存在數學模型,但是難于實現的問題。

3.應用場景

?? 在8*8國際象棋棋盤上,要求在每一行放置一個皇后,且能做到在豎方向,斜方向都沒有沖突。國際象棋的棋盤如下圖所示:

4.分析

? 基本思路如上面分析一致,我們采用逐步試探的方式,先從一個方向往前走,能進則進,不能進則退,嘗試另外的路徑。首先我們來分析一下國際象棋的規則,這些規則能夠限制我們的前進,也就是我們前進途中的障礙物。一個皇后q(x,y)能被滿足以下條件的皇后q(row,col)吃掉

1)x=row(在縱向不能有兩個皇后)

2)? y=col(橫向)

3)col + row = y+x;(斜向正方向)

4)? col - row = y-x;(斜向反方向)

遇到上述問題之一的時候,說明我們已經遇到了障礙,不能繼續向前了。我們需要退回來,嘗試其他路徑。

我們將棋盤看作是一個8*8的數組,這樣可以使用一種蠻干的思路去解決這個問題,這樣我們就是在8*8=64個格子中取出8個的組合,C(64,80) = 4426165368,顯然這個數非常大,在蠻干的基礎上我們可以增加回溯,從第0列開始,我們逐列進行,從第0行到第7行找到一個不受任何已經現有皇后攻擊的位置,而第五列,我們會發現找不到皇后的安全位置了,前面四列的擺放如下:

第五列的時候,擺放任何行都會上圖所示已經存在的皇后的攻擊,這時候我們認為我們撞了南墻了,是回頭的時候了,我們后退一列,將原來擺放在第四列的皇后(3,4)拿走,從(3,4)這個位置開始,我們再第四列中尋找下一個安全位置為(7,4),再繼續到第五列,發現第五列仍然沒有安全位置,回溯到第四列,此時第四列也是一個死胡同了,我們再回溯到第三列,這樣前進幾步,回退一步,最終直到在第8列上找到一個安全位置(成功)或者第一列已經是死胡同,但是第8列仍然沒有找到安全位置為止

總結一下,用回溯的方法解決8皇后問題的步驟為:

1)從第一列開始,為皇后找到安全位置,然后跳到下一列

2)如果在第n列出現死胡同,如果該列為第一列,棋局失敗,否則后退到上一列,在進行回溯

3)如果在第8列上找到了安全位置,則棋局成功。

8個皇后都找到了安全位置代表棋局的成功,用一個長度為8的整數數組queenList代表成功擺放的8個皇后,數組索引代表棋盤的col向量,而數組的值為棋盤的row向

量,所以(row,col)的皇后可以表示為(queenList[col],col),如上圖中的幾個皇后可表示為:

queenList[0] = 0;? queenList[1] = 3;?? queenList[2] = 1;? queenList[3] = 4;?? queenList = 2;

我們看一下如何設計程序:

首先判斷(row,col)是否是安全位置的算法:

bool IsSafe(int col,int row,int[] queenList){//只檢查前面的列for (int tempCol = 0; tempCol < col; tempCol++){int tempRow = queenList[tempCol];if (tempRow == row){//同一行return false;}if (tempCol == col){//同一列return false;}if (tempRow - tempCol == row - col || tempRow + tempCol == row + col){return false;}}return true;}

設定一個函數,用于查找col列后的皇后擺放方法:

//<span style="color: rgb(0, 128, 0); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 24px; background-color: rgb(238, 238, 238);">在第col列尋找安全的row值</span> public bool PlaceQueue(int[] queenList, int col){int row = 0;bool foundSafePos = false;if (col == 8) //結束標志{//當處理完第8列的完成foundSafePos = true;}else{while (row < 8 && !foundSafePos){if (IsSafe(col, row, queenList)){//找到安全位置queenList[col] = row;//找下一列的安全位置foundSafePos = PlaceQueue(queenList, col + 1);if (!foundSafePos){row++;}}else{row++;}}}return foundSafePos;}

調用方法:

static void Main(string[] args){EightQueen eq = new EightQueen();int[] queenList = new int[8];for (int j = 0; j < 8; j++){Console.WriteLine("-----------------"+j+"---------------------");queenList[0] = j;bool res = eq.PlaceQueue(queenList, 1);if (res){Console.Write(" "); for (int i = 0; i < 8; i++){Console.Write(" " + i.ToString() + " "); }Console.WriteLine("");for (int i = 0; i < 8; i++){Console.Write(" "+i.ToString()+" "); for (int a = 0; a < 8; a++){ if (i == queenList[a]){Console.Write(" q ");}else{Console.Write(" * ");}}Console.WriteLine("");}Console.WriteLine("---------------------------------------");}else{Console.WriteLine("不能完成棋局,棋局失敗!");}}Console.Read();}

遞歸算法PlaceQueue,完成這樣的功能:它尋找第col列后的皇后的安全擺放位置,如果該函數返回了false,表示當前進入了死胡同,需要進行回溯,直到為0-7列都找


到了安全位置或者找遍這些列都找不到安全位置的時候終止。

用遞歸算法解決8皇后問題的示例程序:?

/Files/jillzhang/EightQueens.rar

歡迎大家下載;

-----------------------------------------------------------------------------------------------------------------

附一:另外一些優秀代碼

ps:上面的這個C#代碼可能沒有考慮到八皇后問題的所有情況!

另外還有一些其他作者的相關代碼,提供給大家學習之用:

附方法一:

//8 Queen 遞歸算法 //如果有一個Q 為 chess[i]=j; //則不安全的地方是 k行 j位置,j+k-i位置,j-k+i位置 class Queen8{ static final int QueenMax = 8; static int oktimes = 0; static int chess[] = new int[QueenMax];//每一個Queen的放置位置 public static void main(String[] args) { long time = System.currentTimeMillis(); for (int i=0;i<QueenMax;i++)chess[i]=-1; placequeen(0); System.out.println("\n\n\n八皇后共有"+oktimes+"個解法 made by yifi 2003"); System.out.println((System.currentTimeMillis() - time) + "毫秒"); } public static void placequeen(int num){ //num 為現在要放置的行數 int i=0; boolean qsave[] = new boolean[QueenMax]; for(;i<QueenMax;i++) qsave[i]=true; //下面先把安全位數組完成 i=0;//i 是現在要檢查的數組值 while (i<num){ qsave[chess[i]]=false; int k=num-i; if ( (chess[i]+k >= 0) && (chess[i]+k < QueenMax) ) qsave[chess[i]+k]=false; if ( (chess[i]-k >= 0) && (chess[i]-k < QueenMax) ) qsave[chess[i]-k]=false; i++; } //下面歷遍安全位 for(i=0;i<QueenMax;i++){ if (qsave[i]==false)continue; if (num<QueenMax-1){ chess[num]=i; placequeen(num+1); } else{ //num is last one chess[num]=i; oktimes++; System.out.println("這是第"+oktimes+"個解法 如下:"); System.out.println("第n行: 1 2 3 4 5 6 7 8"); for (i=0;i<QueenMax;i++){ String row="第"+(i+1)+"行: "; if (chess[i]==0); else for(int j=0;j<chess[i];j++) row+="--"; row+="++"; int j = chess[i]; while(j<QueenMax-1){row+="--";j++;} System.out.println(row); } } } //歷遍完成就停止 } }
附方法二:

public class Queen_Java { int QUEEN_COUNT = 8; //是多少皇后 static final int EMPTY = 0; int[][] count = new int[QUEEN_COUNT][QUEEN_COUNT]; int[] QueenIndex = new int[QUEEN_COUNT]; int resultCount = 0; long time = System.currentTimeMillis(); public void putQueenIndex(int row) { for (int col = 0; col < QUEEN_COUNT; col++) { if (count[row][col] == EMPTY) { for (int iRow = row+ 1; iRow < QUEEN_COUNT; iRow++) { count[iRow][col]++; if ((col - iRow + row) >= 0) { count[iRow][col - iRow + row]++; } if ((col + iRow - row) < QUEEN_COUNT) { count[iRow][col + iRow - row]++; } } QueenIndex[row] = col; if (row == QUEEN_COUNT - 1) { print(++resultCount); } else { putQueenIndex(row + 1); } for (int iRow = row+ 1; iRow < QUEEN_COUNT; iRow++) { count[iRow][col]--; if ((col - iRow + row) >= 0) { count[iRow][col - iRow + row]--; } if ((col + iRow - row) < QUEEN_COUNT) { count[iRow][col + iRow - row]--; } } } } if (row == 0) { System.out.println(QUEEN_COUNT + "皇后共有 " + resultCount + " 個解\n" + (System.currentTimeMillis() - time) + "毫秒"); } } public void print(int n) { System.out.println(QUEEN_COUNT + "皇后的第 " + n + " 個解:"); for (int i = 0; i < QUEEN_COUNT; i++) { for (int j = 0; j < QUEEN_COUNT; j++) { System.out.print(QueenIndex[i] == j ? " * " : " - "); } System.out.println(); } System.out.println(); } public static void main(String[] args) { new Queen_Java().putQueenIndex(0); } }


附方法三:

public class Queen_Java_NoOut { static final int QUEEN_COUNT = 16; //是多少皇后 static final int EMPTY = 0; int[][] count = new int[QUEEN_COUNT][QUEEN_COUNT]; int[] QueenIndex = new int[QUEEN_COUNT]; int resultCount = 0; public void putQueenIndex(int row) { for (int col = 0; col < QUEEN_COUNT; col++) { if (count[row][col] == EMPTY) { for (int iRow = row+ 1; iRow < QUEEN_COUNT; iRow++) { count[iRow][col]++; if ((col - iRow + row) >= 0) { count[iRow][col - iRow + row]++; } if ((col + iRow - row) < QUEEN_COUNT) { count[iRow][col + iRow - row]++; } } QueenIndex[row] = col; if (row == QUEEN_COUNT - 1) { ++resultCount; } else { putQueenIndex(row + 1); } for (int iRow = row+ 1; iRow < QUEEN_COUNT; iRow++) { count[iRow][col]--; if ((col - iRow + row) >= 0) { count[iRow][col - iRow + row]--; } if ((col + iRow - row) < QUEEN_COUNT) { count[iRow][col + iRow - row]--; } } } } } public static void main(String[] args) { Queen_Java_NoOut obj = new Queen_Java_NoOut(); long time = System.currentTimeMillis(); obj.putQueenIndex(0); long useTime = System.currentTimeMillis() - time; System.out.println(QUEEN_COUNT + "皇后共有 " + obj.resultCount + " 個解\n" + useTime + "毫秒"); } }
附方法四:

import java.util.Calendar; public class Queen_Fastest { public static int sum = 0, upperlimit = 1; public static void compute(int row, int ld, int rd) { if (row != upperlimit) { int pos = upperlimit & ~(row | ld | rd); while (pos != 0) { int p = pos & -pos; pos -= p; compute(row + p, (ld + p) << 1, (rd + p) >> 1); } } else sum++; } public static void main(String[] args) { Calendar start; int n = 8; if (args.length > 0) n = Integer.parseInt(args[0]); start = Calendar.getInstance(); if ((n < 1) || (n > 32)) { System.out.println(" 只能計算1-32之間\n"); return; } System.out.println(n + " 皇后\n"); upperlimit = (upperlimit << n) - 1; compute(0, 0, 0); System.out.println("共有" + sum + "種排列, 計算時間" + (Calendar.getInstance().getTimeInMillis() - start.getTimeInMillis()) / 1000 + "秒 \n"); } }

附二:八皇后的全部92種情況

八皇后一共有92種情況,如下:

這是第1個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ++--------------
第2行: --------++------
第3行: --------------++
第4行: ----------++----
第5行: ----++----------
第6行: ------------++--
第7行: --++------------
第8行: ------++--------


這是第2個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ++--------------
第2行: ----------++----
第3行: --------------++
第4行: ----++----------
第5行: ------------++--
第6行: ------++--------
第7行: --++------------
第8行: --------++------


這是第3個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ++--------------
第2行: ------------++--
第3行: ------++--------
第4行: ----------++----
第5行: --------------++
第6行: --++------------
第7行: --------++------
第8行: ----++----------


這是第4個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ++--------------
第2行: ------------++--
第3行: --------++------
第4行: --------------++
第5行: --++------------
第6行: ------++--------
第7行: ----------++----
第8行: ----++----------


這是第5個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --++------------
第2行: ------++--------
第3行: ----------++----
第4行: --------------++
第5行: ----++----------
第6行: ++--------------
第7行: ------------++--
第8行: --------++------


這是第6個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --++------------
第2行: --------++------
第3行: ------------++--
第4行: ++--------------
第5行: ----++----------
第6行: --------------++
第7行: ----------++----
第8行: ------++--------


這是第7個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --++------------
第2行: --------++------
第3行: ------------++--
第4行: ------++--------
第5行: ++--------------
第6行: --------------++
第7行: ----------++----
第8行: ----++----------


這是第8個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --++------------
第2行: ----------++----
第3行: ++--------------
第4行: ------------++--
第5行: ------++--------
第6行: --------------++
第7行: ----++----------
第8行: --------++------


這是第9個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --++------------
第2行: ----------++----
第3行: --------------++
第4行: ----++----------
第5行: ++--------------
第6行: ------++--------
第7行: ------------++--
第8行: --------++------


這是第10個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --++------------
第2行: ------------++--
第3行: ----++----------
第4行: ----------++----
第5行: --------------++
第6行: --------++------
第7行: ++--------------
第8行: ------++--------


這是第11個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --++------------
第2行: ------------++--
第3行: --------++------
第4行: --------------++
第5行: ++--------------
第6行: ------++--------
第7行: ----------++----
第8行: ----++----------


這是第12個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --++------------
第2行: --------------++
第3行: ----------++----
第4行: ++--------------
第5行: ----++----------
第6行: --------++------
第7行: ------------++--
第8行: ------++--------


這是第13個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----++----------
第2行: ++--------------
第3行: ------------++--
第4行: --------++------
第5行: --------------++
第6行: --++------------
第7行: ------++--------
第8行: ----------++----


這是第14個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----++----------
第2行: --------++------
第3行: --++------------
第4行: --------------++
第5行: ++--------------
第6行: ------------++--
第7行: ------++--------
第8行: ----------++----


這是第15個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----++----------
第2行: --------++------
第3行: --++------------
第4行: --------------++
第5行: ----------++----
第6行: ------++--------
第7行: ------------++--
第8行: ++--------------


這是第16個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----++----------
第2行: --------++------
第3行: ------------++--
第4行: ++--------------
第5行: ------++--------
第6行: --++------------
第7行: --------------++
第8行: ----------++----


這是第17個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----++----------
第2行: --------++------
第3行: --------------++
第4行: ------++--------
第5行: ++--------------
第6行: ------------++--
第7行: --++------------
第8行: ----------++----


這是第18個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----++----------
第2行: ----------++----
第3行: --++------------
第4行: --------++------
第5行: --------------++
第6行: ++--------------
第7行: ------------++--
第8行: ------++--------


這是第19個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----++----------
第2行: ----------++----
第3行: --++------------
第4行: ------------++--
第5行: ++--------------
第6行: ------++--------
第7行: --------------++
第8行: --------++------


這是第20個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----++----------
第2行: ----------++----
第3行: --++------------
第4行: ------------++--
第5行: --------++------
第6行: ++--------------
第7行: --------------++
第8行: ------++--------


這是第21個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----++----------
第2行: ----------++----
第3行: ------++--------
第4行: ++--------------
第5行: --------------++
第6行: --------++------
第7行: ------------++--
第8行: --++------------


這是第22個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----++----------
第2行: ----------++----
第3行: ------++--------
第4行: --++------------
第5行: --------------++
第6行: --------++------
第7行: ------------++--
第8行: ++--------------


這是第23個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----++----------
第2行: ----------++----
第3行: --------------++
第4行: ++--------------
第5行: ------++--------
第6行: ------------++--
第7行: --------++------
第8行: --++------------


這是第24個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----++----------
第2行: ----------++----
第3行: --------------++
第4行: ++--------------
第5行: --------++------
第6行: ------------++--
第7行: --++------------
第8行: ------++--------


這是第25個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----++----------
第2行: ----------++----
第3行: --------------++
第4行: --++------------
第5行: ------++--------
第6行: ++--------------
第7行: ------------++--
第8行: --------++------


這是第26個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----++----------
第2行: ------------++--
第3行: --++------------
第4行: --------------++
第5行: --------++------
第6行: ++--------------
第7行: ------++--------
第8行: ----------++----


這是第27個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----++----------
第2行: ------------++--
第3行: --++------------
第4行: --------------++
第5行: ----------++----
第6行: ------++--------
第7行: ++--------------
第8行: --------++------


這是第28個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----++----------
第2行: --------------++
第3行: ------++--------
第4行: ------------++--
第5行: ++--------------
第6行: ----------++----
第7行: --++------------
第8行: --------++------


這是第29個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------++--------
第2行: ++--------------
第3行: --------++------
第4行: --------------++
第5行: --++------------
第6行: ------------++--
第7行: ----++----------
第8行: ----------++----


這是第30個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------++--------
第2行: ++--------------
第3行: --------++------
第4行: --------------++
第5行: ----------++----
第6行: ----++----------
第7行: ------------++--
第8行: --++------------


這是第31個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------++--------
第2行: --++------------
第3行: --------++------
第4行: --------------++
第5行: ----------++----
第6行: ++--------------
第7行: ----++----------
第8行: ------------++--


這是第32個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------++--------
第2行: --++------------
第3行: ------------++--
第4行: ----++----------
第5行: ----------++----
第6行: --------------++
第7行: ++--------------
第8行: --------++------


這是第33個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------++--------
第2行: --++------------
第3行: ------------++--
第4行: ----++----------
第5行: ----------++----
第6行: --------------++
第7行: --------++------
第8行: ++--------------


這是第34個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------++--------
第2行: --++------------
第3行: ------------++--
第4行: --------++------
第5行: ++--------------
第6行: --------------++
第7行: ----------++----
第8行: ----++----------


這是第35個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------++--------
第2行: --++------------
第3行: --------------++
第4行: --------++------
第5行: ------------++--
第6行: ++--------------
第7行: ----++----------
第8行: ----------++----


這是第36個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------++--------
第2行: --++------------
第3行: --------------++
第4行: ----------++----
第5行: ++--------------
第6行: ----++----------
第7行: --------++------
第8行: ------------++--


這是第37個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------++--------
第2行: ----------++----
第3行: ++--------------
第4行: --------++------
第5行: --++------------
第6行: --------------++
第7行: ----++----------
第8行: ------------++--


這是第38個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------++--------
第2行: ----------++----
第3行: --------------++
第4行: --++------------
第5行: ------------++--
第6行: ++--------------
第7行: ----++----------
第8行: --------++------


這是第39個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------++--------
第2行: ----------++----
第3行: --------------++
第4行: ----++----------
第5行: ++--------------
第6行: ------------++--
第7行: --------++------
第8行: --++------------


這是第40個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------++--------
第2行: ------------++--
第3行: ++--------------
第4行: --------------++
第5行: --------++------
第6行: --++------------
第7行: ----------++----
第8行: ----++----------


這是第41個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------++--------
第2行: ------------++--
第3行: ----++----------
第4行: --------------++
第5行: --++------------
第6行: --------++------
第7行: ++--------------
第8行: ----------++----


這是第42個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------++--------
第2行: ------------++--
第3行: --------++------
第4行: --++------------
第5行: ----------++----
第6行: ++--------------
第7行: ----++----------
第8行: --------------++


這是第43個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------++--------
第2行: ------------++--
第3行: --------++------
第4行: ----++----------
第5行: ++--------------
第6行: ----------++----
第7行: --------------++
第8行: --++------------


這是第44個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------++--------
第2行: --------------++
第3行: ++--------------
第4行: ----++----------
第5行: ----------++----
第6行: --++------------
第7行: ------------++--
第8行: --------++------


這是第45個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------++--------
第2行: --------------++
第3行: ++--------------
第4行: --------++------
第5行: ------------++--
第6行: --++------------
第7行: ----------++----
第8行: ----++----------


這是第46個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------++--------
第2行: --------------++
第3行: --------++------
第4行: ----++----------
第5行: ++--------------
第6行: ------------++--
第7行: --++------------
第8行: ----------++----


這是第47個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------++------
第2行: ++--------------
第3行: ------++--------
第4行: ----------++----
第5行: --------------++
第6行: --++------------
第7行: ------------++--
第8行: ----++----------


這是第48個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------++------
第2行: ++--------------
第3行: --------------++
第4行: ------++--------
第5行: --++------------
第6行: ------------++--
第7行: ----++----------
第8行: ----------++----


這是第49個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------++------
第2行: ++--------------
第3行: --------------++
第4行: ----------++----
第5行: ----++----------
第6行: ------------++--
第7行: --++------------
第8行: ------++--------


這是第50個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------++------
第2行: --++------------
第3行: ------++--------
第4行: ----------++----
第5行: --------------++
第6行: ----++----------
第7行: ++--------------
第8行: ------------++--


這是第51個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------++------
第2行: --++------------
第3行: ------++--------
第4行: ------------++--
第5行: ----++----------
第6行: --------------++
第7行: ----------++----
第8行: ++--------------


這是第52個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------++------
第2行: --++------------
第3行: ----------++----
第4行: ++--------------
第5行: ------------++--
第6行: ------++--------
第7行: --------------++
第8行: ----++----------


這是第53個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------++------
第2行: --++------------
第3行: --------------++
第4行: ++--------------
第5行: ------++--------
第6行: ------------++--
第7行: ----++----------
第8行: ----------++----


這是第54個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------++------
第2行: ----++----------
第3行: ++--------------
第4行: ----------++----
第5行: --------------++
第6行: --++------------
第7行: ------++--------
第8行: ------------++--


這是第55個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------++------
第2行: ----++----------
第3行: ++--------------
第4行: ------------++--
第5行: --++------------
第6行: --------------++
第7行: ----------++----
第8行: ------++--------


這是第56個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------++------
第2行: ----++----------
第3行: --------------++
第4行: ------++--------
第5行: ------------++--
第6行: ++--------------
第7行: ----------++----
第8行: --++------------


這是第57個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------++------
第2行: ------------++--
第3行: ++--------------
第4行: ----++----------
第5行: --------------++
第6行: ----------++----
第7行: ------++--------
第8行: --++------------


這是第58個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------++------
第2行: ------------++--
第3行: ++--------------
第4行: ------++--------
第5行: --++------------
第6行: --------------++
第7行: ----------++----
第8行: ----++----------


這是第59個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------++------
第2行: ------------++--
第3行: --++------------
第4行: ------++--------
第5行: --------------++
第6行: ++--------------
第7行: ----++----------
第8行: ----------++----


這是第60個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------++------
第2行: ------------++--
第3行: --++------------
第4行: ----------++----
第5行: ----++----------
第6行: ++--------------
第7行: ------++--------
第8行: --------------++


這是第61個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------++------
第2行: ------------++--
第3行: --++------------
第4行: ----------++----
第5行: ----++----------
第6行: ++--------------
第7行: --------------++
第8行: ------++--------


這是第62個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------++------
第2行: ------------++--
第3行: ------++--------
第4行: ++--------------
第5行: ----++----------
第6行: --------------++
第7行: ----------++----
第8行: --++------------


這是第63個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------++------
第2行: --------------++
第3行: ------++--------
第4行: ++--------------
第5行: ----++----------
第6行: ----------++----
第7行: --++------------
第8行: ------------++--


這是第64個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------++------
第2行: --------------++
第3行: ------++--------
第4行: ++--------------
第5行: ------------++--
第6行: --++------------
第7行: ----------++----
第8行: ----++----------


這是第65個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----------++----
第2行: ++--------------
第3行: --------++------
第4行: --++------------
第5行: --------------++
第6行: ----++----------
第7行: ------------++--
第8行: ------++--------


這是第66個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----------++----
第2行: --++------------
第3行: ------------++--
第4行: ++--------------
第5行: ----++----------
第6行: --------++------
第7行: --------------++
第8行: ------++--------


這是第67個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----------++----
第2行: --++------------
第3行: ------------++--
第4行: ++--------------
第5行: ------++--------
第6行: --------------++
第7行: --------++------
第8行: ----++----------


這是第68個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----------++----
第2行: ----++----------
第3行: ++--------------
第4行: ------------++--
第5行: --------++------
第6行: --------------++
第7行: --++------------
第8行: ------++--------


這是第69個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----------++----
第2行: ----++----------
第3行: ++--------------
第4行: --------------++
第5行: ------++--------
第6行: --++------------
第7行: ------------++--
第8行: --------++------


這是第70個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----------++----
第2行: ----++----------
第3行: ++--------------
第4行: --------------++
第5行: --------++------
第6行: --++------------
第7行: ------++--------
第8行: ------------++--


這是第71個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----------++----
第2行: ----++----------
第3行: --------++------
第4行: ------------++--
第5行: ++--------------
第6行: ------++--------
第7行: --++------------
第8行: --------------++


這是第72個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----------++----
第2行: ----++----------
第3行: --------++------
第4行: --------------++
第5行: ++--------------
第6行: ------++--------
第7行: --++------------
第8行: ------------++--


這是第73個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----------++----
第2行: ----++----------
第3行: ------------++--
第4行: --++------------
第5行: ------++--------
第6行: --------------++
第7行: ++--------------
第8行: --------++------


這是第74個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----------++----
第2行: ----++----------
第3行: ------------++--
第4行: --++------------
第5行: --------------++
第6行: --------++------
第7行: ++--------------
第8行: ------++--------


這是第75個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----------++----
第2行: ----++----------
第3行: ------------++--
第4行: ------++--------
第5行: ++--------------
第6行: --------------++
第7行: --++------------
第8行: --------++------


這是第76個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----------++----
第2行: ------++--------
第3行: ++--------------
第4行: --------++------
第5行: --------------++
第6行: --++------------
第7行: ------------++--
第8行: ----++----------


這是第77個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----------++----
第2行: ------++--------
第3行: --++------------
第4行: --------------++
第5行: --------++------
第6行: ------------++--
第7行: ++--------------
第8行: ----++----------


這是第78個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----------++----
第2行: ------++--------
第3行: ------------++--
第4行: ++--------------
第5行: ----++----------
第6行: --------++------
第7行: --++------------
第8行: --------------++


這是第79個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----------++----
第2行: ------++--------
第3行: ------------++--
第4行: ++--------------
第5行: --------------++
第6行: --++------------
第7行: --------++------
第8行: ----++----------


這是第80個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ----------++----
第2行: --------------++
第3行: --++------------
第4行: ------++--------
第5行: ++--------------
第6行: ------------++--
第7行: --------++------
第8行: ----++----------


這是第81個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------------++--
第2行: ++--------------
第3行: ----++----------
第4行: --------------++
第5行: ----------++----
第6行: ------++--------
第7行: --++------------
第8行: --------++------


這是第82個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------------++--
第2行: --++------------
第3行: ------++--------
第4行: ++--------------
第5行: --------------++
第6行: --------++------
第7行: ----++----------
第8行: ----------++----


這是第83個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------------++--
第2行: --++------------
第3行: ----------++----
第4行: ----++----------
第5行: ++--------------
第6行: ------++--------
第7行: --------------++
第8行: --------++------


這是第84個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------------++--
第2行: ----++----------
第3行: ++--------------
第4行: ----------++----
第5行: --------------++
第6行: --------++------
第7行: --++------------
第8行: ------++--------


這是第85個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------------++--
第2行: ----++----------
第3行: --------------++
第4行: --++------------
第5行: --------++------
第6行: ++--------------
第7行: ----------++----
第8行: ------++--------


這是第86個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------------++--
第2行: ------++--------
第3行: --++------------
第4行: --------++------
第5行: --------------++
第6行: ++--------------
第7行: ----++----------
第8行: ----------++----


這是第87個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------------++--
第2行: ------++--------
第3行: --++------------
第4行: --------------++
第5行: ----------++----
第6行: ++--------------
第7行: ----++----------
第8行: --------++------


這是第88個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: ------------++--
第2行: --------++------
第3行: ----++----------
第4行: ++--------------
第5行: ----------++----
第6行: --------------++
第7行: --++------------
第8行: ------++--------


這是第89個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------------++
第2行: --++------------
第3行: ------++--------
第4行: ++--------------
第5行: ------------++--
第6行: --------++------
第7行: ----++----------
第8行: ----------++----


這是第90個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------------++
第2行: --++------------
第3行: --------++------
第4行: ----++----------
第5行: ++--------------
第6行: ------------++--
第7行: ------++--------
第8行: ----------++----


這是第91個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------------++
第2行: ----++----------
第3行: ++--------------
第4行: ----------++----
第5行: --++------------
第6行: --------++------
第7行: ------------++--
第8行: ------++--------


這是第92個解法 如下:
第n行: 1 2 3 4 5 6 7 8
第1行: --------------++
第2行: ------++--------
第3行: ++--------------
第4行: ----++----------
第5行: ----------++----
第6行: --++------------
第7行: ------------++--
第8行: --------++------

八皇后共有92個解法

原文地址:http://www.cnblogs.com/jillzhang/archive/2007/10/21/922830.html

總結

以上是生活随笔為你收集整理的递归算法学习系列之八皇后问题的全部內容,希望文章能夠幫你解決所遇到的問題。

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