一起做做C語言題唄,看你能不能馬上有代碼邏輯。(二)

八皇后問題,是一個古老而著名的問題,是回溯算法的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾於1848年提出:在8×8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。 高斯認為有76種方案。1854年在柏林的象棋雜誌上不同的作者發表了40種不同的解,後來有人用圖論的方法解出92種結果。計算機發明後,有多種計算機語言可以解決此問題。

一起做做C語言題唄,看你能不能馬上有代碼邏輯。(二)

思路:

對於八皇后的求解可採用回溯算法,從上至下依次在每一行放置皇后,進行搜索,若在某一行的任意一列放置皇后均不能滿足要求,則不再向下搜索,而進行回溯,回溯至有其他列可放置皇后的一行,再向下搜索,直到搜索至最後一行,找到可行解,輸出。

可以使用遞歸函數實現上述回溯算法,遞歸函數用於求解在某一行放置皇后,具體代碼如下所示

一起做做C語言題唄,看你能不能馬上有代碼邏輯。(二)

一起做做C語言題唄,看你能不能馬上有代碼邏輯。(二)

一起做做C語言題唄,看你能不能馬上有代碼邏輯。(二)

你想到的什麼方案解決呢??不要吝嗇,分享出來,大家一起討論討論。還有很多很好的方案,這裡只是拋磚引玉了。


分享到:


相關文章: