窮舉法的基本思想是根據(jù)題目的部分條件確定答案的大致范圍,并在此范圍內(nèi)對所有可能的情況逐一驗證,直到全部情況驗證完畢。若某個情況驗證符合題目的全部條件,則為本問題的一個解;若全部情況驗證后都不符合題目的全部條件,則本題無解。窮舉法也稱為枚舉法。
基本信息
用窮舉法解題時,就是按照某種方式列舉問題答案的過程。針對問題的數(shù)據(jù)類型而言,常用的列舉方法一有如下三種:(1)順序列舉 是指答案范圍內(nèi)的各種情況很容易與自然數(shù)對應甚至就是自然數(shù),可以按自然數(shù)的變化順序去列舉。(2)排列列舉 有時答案的數(shù)據(jù)形式是一組數(shù)的排列,列舉出所有答案所在范圍內(nèi)的排列,為排列列舉。(3)組合列舉 當答案的數(shù)據(jù)形式為一些元素的組合時,往往需要用組合列舉。組合是無序的。例子如下:在公元五世紀我國數(shù)學家張丘建在其《算經(jīng)》一書中提出了“百雞問題 ”:“雞翁一值錢5,雞母一值錢3,雞雛三值錢1。百錢買百雞,問雞翁、母、雛各幾何?”這個數(shù)學問題的數(shù)學方程可列出如下:Cock+Hen+Chick=100Cock*5+Hen*3+Chick/3=100顯然這是個不定方程,適用于窮舉法求解。依次取Cock值域中的一個值,然后求其他兩個數(shù),滿足條件就是解。該問題的C語言程序算法如下:int Cock,Hen,Chick; /*定義公雞,母雞,雞雛三個變量*/Cock=0;while (Cock<=19) /*公雞最多不可能大于19*/{ Hen=0;whlie (Hen<=33) /*母雞最多不可能大于33*/{Chick=100-Cock-Hen;if (Cock*15+Hen*9+Chick==300)/*為了方便,將數(shù)量放大三倍比較*/PRintf("/n公雞=%d/n母雞=%d/n雛雞=%d",Cock,Hen,Chick);Hen=Hen+1;}Cock=Cock+1;}破譯方法
新聞熱點
疑難解答