描述
會下西洋棋的人都很清楚:皇后可以在橫、豎、斜線上不限步數地吃掉其他棋子。如何將8個皇后放在棋盤上(有8 * 8個方格),使它們誰也不能被吃掉!即任何兩個皇后都不會在同一行、同一列、或同一斜線上。這就是著名的八皇后問題。
關於輸入本題沒有輸入
關於輸出輸出八皇后問題所有的解,解用乙個 8*8 的字元方正表示,如果某個位置沒有皇后,則對應的字元為「.」,如果有皇后,則對應的字元為「*」。為了美觀起見,同一行的兩個字元之間有乙個空格,解的前一行是乙個數字,表示這個解的序號。(詳見例子輸出)解要按照皇后在第 1 列、第 2 列……第 8 列出現的行數從小到大依次排序。
1 #include 2view codeusing
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
看錯題了……要求是列出現行數從小到大排序
看成了行……
先姑且po一下……
本題解決**:
1 #include 2view codeusing
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
學校的平台不讓過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...