示例:百錢買百雞
公雞3元每只,母雞5元每只,小雞1元3只,一百元錢買一百隻雞。請求出公雞,母雞和小雞的數目?
程式設計簡析:
我們做最極端的假設,公雞可能是0-100,母雞也可能是0-100,小雞還可能是0-100,
將這三種情況用迴圈套起來,那就是1000000種情況。這就是列舉法。
為了將題目再簡化一下,我們還可以對上述題目進行一下優化處理:
假設公雞數為x,母雞數為y,則小雞數是100-x-y,也就有了下面的方程式:
3*x+5*y+(100-x-y)/3=100
從這個方程式中,我們不難看出大體的情況:公雞最多有33只,最少是沒有,即x的範圍是0-33;母雞最多20只,最少0只,即母雞的範圍是0-20;有了公雞母雞,小雞數自然就是100-x-y只。可能的方案一共有34*21種,在這麼多的方案中,可能有一種或幾種正好符合相等的條件。電腦怎樣工作呢?計算機事實上就是將上述34*21種方案全部過濾一遍,找出符合百錢買百雞條件的(也即上式),只要符合,這就是我們要的輸出結果。
示例:小猴吃棗main
define x,y,z integer
define l_result string
for x=0 to 33 step+1
for y=0 to 20 step+1
let z= 100-x-y
if 3*x+5*y+z/3 =100 then
let l_result = "公雞,母雞和小雞數分別為:",x using '####',y using '####', z using '####'
display l_result
end if
end for
end for
end main
結果如下:
fglrun cxm_cxmi999t.42m
公雞,母雞和小雞數分別為: 4 12 84
公雞,母雞和小雞數分別為: 11 8 81
公雞,母雞和小雞數分別為: 18 4 78
公雞,母雞和小雞數分別為: 25 75
小猴第一天摘下若干棗子,當即吃掉了一半,不過癮又多吃了乙個;第二天吃了剩下的一半又多吃了乙個;以後每一天都吃了前一天剩下的一半多乙個。到第十天小猴再想吃時,見到只剩下乙隻棗子了。問第一天這堆棗子有多少?
從上題中我們可看到乙個令人欣喜的規律,第十天為1,第九到第一天中後一天與1的和的兩倍與前一天相等。下面就對這一規律做了描述:
define g_result integer
main
define i integer
define l_result integer
for i=10 to 1 step -1
call monkey(i) returning l_result
let g_result = l_result
display "第",i using '##'," 天這堆棗的個數為:",g_result using '####個'
end for
end main
function monkey(p_num)
define p_num,monkey integer
if p_num >=10 then
let monkey = 1
else
let monkey = 2 * (g_result + 1)
end if
return monkey
end function
結果如下:
fglrun cxm_cxmi999t.42m
第10 天這堆棗的個數為: 1個
第 9 天這堆棗的個數為: 4個
第 8 天這堆棗的個數為: 10個
第 7 天這堆棗的個數為: 22個
第 6 天這堆棗的個數為: 46個
第 5 天這堆棗的個數為: 94個
第 4 天這堆棗的個數為: 190個
第 3 天這堆棗的個數為: 382個
第 2 天這堆棗的個數為: 766個
第 1 天這堆棗的個數為:1534個
列舉法 百錢百雞2
中國數學家張邱建 公元五世紀,其它資料不詳 在他的 算經 中提出了著名的 百錢買百雞 問題 雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一。百錢買百雞,問翁 母 雛各幾何?你的任務是 根據給定的錢數m,和買到的雞數n,輸出所有的方案。如果沒有可行方案,輸出none。只有兩個整數m n 0若干行,每行...
C 實驗4 百錢買百雞問題
一。問題及 檔名稱 aaaa.cpp 作 者 andy 完成日期 2016年 4 月 25 日 版 本 號 v1.0 對任務及求解方法的描述部分 迴圈架構求解問題 輸入描述 無 程式輸出 百錢買百雞的方案有 問題分析 略 演算法設計 略 三。心得體會 這是第一次編寫迴圈結構的程式,過程中出了很多錯,...
C 實驗4 百錢買百雞問題
一 問題及 檔名稱 c 實驗4 作 者 林子豪 完成日期 2017年 4月 19日 版 本 號 v1.0 對任務及求解方法的描述部分 無 輸入描述 無 問題描述 無 程式輸出 百錢買百雞 問題分析 無 演算法設計 三 心得體會 迴圈程式的程式設計中,for語句比while語句更加靈活,特別是在有多個...