4GL演算法 列舉法 百錢買百雞,遞迴法 小猴吃棗

2021-06-09 18:19:00 字數 2154 閱讀 4194

示例:百錢買百雞

公雞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語句更加靈活,特別是在有多個...