在西洋棋裡面,皇后是最具有殺傷力的**,它可以對它的十字形和對角線元素進行攻擊。
八皇后問題就是在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 每次填滿第一行第一列,當不滿...