c語言八皇后問題

2021-07-25 03:58:29 字數 863 閱讀 7261

在西洋棋裡面,皇后是最具有殺傷力的**,它可以對它的十字形和對角線元素進行攻擊。

八皇后問題就是在8*8的棋盤上的每一行都放置乙個皇后,使他們無法進行互相攻擊

思路:

1.編寫乙個函式,將乙個皇后放在第一列,如果存在攻擊就把皇后放在第二列,如果每列都存在互相攻擊的情況,則這個函式返回

2.若皇后可以放在這個位置,則應該遞迴的呼叫本身,把皇后放在下一行,當遞迴函式返回時候,就證明本行這個位置放置導致下一行皇后無處可放,則將本行皇后向後移動乙個位置,判斷是否可以放置皇后,如果可以則進入遞迴函式裡面,若不可以則在將本行皇后向後挪動一列

首先我們應該編寫檢查函式:

int issafe(int (*chess)[eight], int row, int col)

else

} }}

遞迴函式:
void eightqueen(int (*chess)[eight], int row)

else

} }

輸出函式:

void showchess(int (*chess)[eight])

printf("\n");

}}

主函式:

void main()

;//定義並且初始化棋盤

eightqueen(chess, 0);//進行處理

}

八皇后問題 C語言

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

八皇后問題(C語言)

問題描述 八皇后問題是乙個以西洋棋為背景的問題 如何能夠在 8 8 的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后。為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上。例如下圖就是八皇后問題的乙個解 假如一棋盤已經正確放置了七個皇后,編寫程式求解最後乙個皇后的放置位置...

八皇后問題c語言演算法

目錄 toc 相信八皇后規則的問題,大家都很熟悉,接下來是如何分析回溯法的應用。回溯法與圖裡面的深度優先遍歷非常的類似,就是,在滿足題目條件時候,它總是優先選擇第乙個,當不滿足的時候,它會選擇接下來的乙個點,通常會用遍歷陣列的方式。總體的 構建如下 void fun n 每次填滿第一行第一列,當不滿...