八皇后遞迴演算法

2021-10-20 19:03:50 字數 573 閱讀 1845

#include //規則

//在8x8的棋盤內放置八個皇后,並且保證每個皇后是安全的。

//分析

//每個皇后必須單獨一行,用乙個陣列來表示她們所在列的位置,下標代表所在行的位置。

int aqueen[8] = ;//儲存結果

bool analyzepoint(int x, int y)//規則檢測,檢測當前位置是否和已有位置衝突

return true;

}void getpoint(int x)

return;

} }//找不到合理位置,說明前乙個放置的位置不合理。分配新位置

aqueen[x] = 0;

aqueen[--x] ++;

getpoint(x);

}int main()

else

}std::cout << "\n";

} system("pause");

}

執行結果

八皇后 遞迴演算法

在8 8格的西洋棋上擺放8個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有76種方案。1854年在柏林的象棋雜誌上不同的作者發表了40種不同的解,後來有人用圖論的方法解出92種結果。如果經過 90度 180度旋轉,和對角線對稱變換的擺法看成一類...

遞迴演算法之八皇后

八皇后問題核心 1 同一行或者同一列不能放置皇后 2 斜率為1 1的對角線上不能有兩個皇后。如圖 實現原理 include include using std cout using std endl int count 0 int detection int board 8 int line,int...

八皇后 遞迴

include iostream using namespace std int number 0 int isleague int row,int j,int chess 8 判斷左上方是否合法 for i row,k j i 0 k 0 i k 判斷右下方是否合法 for i row,k j i...