八皇后問題擴充套件版 c

2021-06-10 08:04:55 字數 665 閱讀 4551

任意大小棋盤,任意數量的皇后

#include #include using namespace std;

const int num = 8 ; //方形棋盤行數

const int qnum = 8 ; //加入皇后的個數

int a[num+1]; //存放棋盤資訊的陣列,陣列號代表行號,對應陣列值代表列號

static int innum = 0; //已放入皇后的個數

static int totalnum = 0; //總的擺放個數

void queen(int);

bool place(int);

int main()

queen(1); //在第一行放皇后

coutif (place(k)) //判斷皇后是否能放在k行a【i】的位置

if (innum < qnum) //新增皇后成功後,如果還未達到目標個數,則再下一行繼續新增

}} }

innum--;

}bool place( int k) //判斷是否能在k行a【i】處新增皇后,

if (a[i]==a[k] || abs(i-k)==abs(a[i]-a[k]))

}return true;

}

擴充套件的八皇后問題

問題是乙個古老而著名的問題,是 回溯演算法 的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848年提出 在8x8格的 西洋棋 上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有76種方案。1854年在 柏林的象棋雜誌上不同的作者發表...

八皇后問題(遞迴版)

author phinecos since 2008 10 31 class eightqueen 第col列不能有多於1個皇后 for i 0 i maxsize i 對角線不能有多於1個皇后 反對角線 for i row 1 j col 1 i 0 j maxsize i,j for i row...

八皇后問題 C

八皇后問題是乙個以西洋棋為背景的問題 如何能夠在 8 8 的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上。八皇后問題可以推廣為更一般的n皇后擺放問題 這時棋盤的大小變為n1 n1,而皇后個數也變成n2。而且僅當 n2...