17 11 16 八皇后問題

2022-02-28 23:45:58 字數 1281 閱讀 8176

描述

會下西洋棋的人都很清楚:皇后可以在橫、豎、斜線上不限步數地吃掉其他棋子。如何將8個皇后放在棋盤上(有8 * 8個方格),使它們誰也不能被吃掉!即任何兩個皇后都不會在同一行、同一列、或同一斜線上。這就是著名的八皇后問題。 

關於輸入

本題沒有輸入

關於輸出

輸出八皇后問題所有的解,解用乙個 8*8 的字元方正表示,如果某個位置沒有皇后,則對應的字元為「.」,如果有皇后,則對應的字元為「*」。為了美觀起見,同一行的兩個字元之間有乙個空格,解的前一行是乙個數字,表示這個解的序號。(詳見例子輸出)解要按照皇后在第 1 列、第 2 列……第 8 列出現的行數從小到大依次排序。

1 #include 2

using

namespace

std;

3int queen[9],qcount=0;4

void

print()

519 cout <

21}22int check(int

row)23;

25for (int i = 1;i<=row;i++)

2636}37

return1;

38}39void eighqueen(int

row)

4053}54

}55void

main()

56

view code

看錯題了……要求是列出現行數從小到大排序

看成了行……

先姑且po一下……

本題解決**:

1 #include 2

using

namespace

std;

3int queen[9],qcount=0; //

queen陣列代表某列queen所在的行數

4void print() //

定義輸出函式517

}18int check(int col) //

定義乙個檢查某個方案的正確性的函式19;

21for (int i = 1;i<=col;i++)

2232}33

return1;

34}35void eighqueen(int col) //

在這個函式中逐個嘗試不同方案,並輸出方案

3649}50

}51void

main()

52

view code

學校的平台不讓過void主函式……也是沒誰了

八皇后問題

八皇后問題 ackarlix 八皇后問題是乙個古老而著名的問題,是回溯演算法的典型例題。該問題是十九世紀著名的數學家高斯 1850 年提出 在 8x8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有 76種方案。1854 年在...

八皇后問題

include iostream.h int a 8 8 棋盤 int r 8 結果 int i,j int count 0 void init i j 0 int judge int x,int y for int mi x 1,mj y mi 1 mi for int ri x 1,rj y 1...

八皇后問題

package quess 由於八個皇后的任意兩個不能處在同一行,那麼這肯定是每乙個皇后佔據一行。於是我們可以定義乙個陣列columnindex 8 陣列中第i個數字表示位於第i行的皇后的列號。先把columnindex的八個數字分別用0 7初始化,接下來我們要做的事情就是對陣列columninde...