基本演算法思想之窮舉法(C 語言描述)

2022-08-30 16:51:15 字數 1488 閱讀 8011

窮舉演算法(exhaustive attack method)是最簡單的一種演算法,其依賴於計算機的強大計算能力來窮盡每一種可能性,從而達到求解問題的目的。窮舉演算法效率不高,但是適應於一些沒有規律可循的場合。

瓊劇演算法的基本思想就是從所有可能的情況中搜尋正確的答案,其執行步驟如下:

(1)對於一種可能的情況,計算其結果。

(2)判斷結果是否符合要求,如果不滿足則執行第(1)步來搜尋下乙個可能的情況;如果符合要求,則表示尋找到乙個正確答案。

在使用窮舉法時,需要明確問題的答案的範圍,這樣才可以在指定的範圍內搜尋答案。指定範圍之後,就可以使用迴圈語句和條件語句逐步驗證候選答案的正確性,從而得到需要的正確答案。

雞兔同籠問題最早記載於2023年前的《孫子兵法》,這是乙個非常有名的問題。雞兔同籠的原文如下:

今有雞兔同籠,上有三十五頭,下有九十四足,問雞兔各幾隻?

這個問題的大致意思是:在乙個籠子裡關著若干隻雞和若干只兔,從上面數共有35個頭,從下面數共有94隻腳。問籠中雞和兔的數量各是多少?

這個問題需要計算雞的數量和兔的數量,我們通過分析可以知道雞的數量應該在1~35之間。這樣我們可以使用窮舉法來逐個判斷是否符合,從而搜尋答案。

採用窮舉法求解雞兔同籠問題的程式示例**如下:

/*

輸入引數head是籠中頭的總數,foot是籠中腳的總數,chicken是雞的總數,rabbit是兔的總數

返回結果為0,表示沒有搜尋到符合條件的結果;

返回結果為1,表示搜尋到了符合條件的結果

*/ int qiongju(int head,int foot,int *chicken,int * rabbit)

} return re;

}

完整的瓊劇演算法求解雞兔同籠問題的程式**如下:

#includeusing namespace std;

/*輸入引數head是籠中頭的總數,foot是籠中腳的總數,chicken是雞的總數,rabbit是兔的總數

返回結果為0,表示沒有搜尋到符合條件的結果;

返回結果為1,表示搜尋到了符合條件的結果

*/ int qiongju(int head,int foot,int *chicken,int * rabbit)

} return re;

}int main()

{ int chicken,rabbit,head,foot;

int re;

cout

cout<

cin>>foot;

re=qiongju(head,foot,&chicken,&rabbit);

if(re==1)

{ cout<

程式中,首先由使用者輸入頭的總數和腳的總數,然後呼叫窮舉法求解雞兔同籠問題的函式,最後輸出結果。

執行該程式,按照題目的要求輸入資料,輸出結果。

C語言窮舉法

使用c語言窮舉法解決求總值問題。1 乙隻猴子採摘了一堆蘋果,第一天吃一半的蘋果,猴子覺得還不夠,於是再吃了乙個。第二天也是這樣。一直到吃了九天,第十天就只剩下乙個了。請問猴子一共採摘了多少蘋果。分析 解決此類問題有兩個方法。一種就是我們較為容易想到的逆推法。還有一種就是窮舉法。逆推法 include...

演算法設計思想(1) 窮舉法

本文系 王曉華 老師 gitchat 演算法應該怎麼玩 課程筆記。窮舉法又稱窮舉搜尋法,是一種在問題域的解空間中對所有可能的解窮舉搜尋,並根據條件選擇最優解的方法的總稱。數學上也把窮舉法稱為列舉法,就是在乙個由有限個元素構成的集合中,把所有元素一一枚舉研究的方法。窮舉法一般用來找出符合條件的所有解,...

第1 6課 演算法設計常用思想之窮舉法

這一課我們來介紹窮舉法,有一些人把窮舉法視為上不了檯面的低階方法,這種想法是錯誤的,雖然窮舉思想的原理簡單,但是用窮舉思想設計乙個演算法卻一點也不簡單。各種演算法模式或思想沒有高下之分,關鍵在於你是否能靈活運用,更不用說很多著名的演算法也會在某個區域性應用窮舉的思想了。某些最優解問題,如果有多個最優...