python函式找錢 找錢問題 動態規劃一例

2021-10-16 15:22:30 字數 722 閱讀 1017

用無限多的面值為 s = 的分幣,表示乙個特定的分值n,有多少種方法?這個就是找錢問題 (coin change problem)。

比如,用 1美分 和 5 美分,表示7美分,有2種方法,第一種是1個5美分,2個1美分;第二種是7個1美分。

因為順序對結果沒有影響,即「1個5美分,2個1美分」和「2個1美分,1個5美分」是一樣的,我們限定 s1 < s2 < … < sm。用遞迴的方法,解法的數量 c(n, m),可以分成2類:

一類是表示方法裡不需要 sm的,另一類是表示方法裡需要sm的。如上面的例子,一類表示是需要5美分,另一類不需要。

於是,遞迴公式如下:

c(n, m) = c(n, m-1) + c(n-sm, m)

python**:def count1(n,m):

global numcalls

numcalls += 1

global s

if n == 0:

return 1

if n < 0:

return 0

if m == 1:

return 1

return count1(n, m-1) + count1(n-s[m-1],m)

s = (1,5,10,25)

numcalls = 0

print count1(100,len(s))

print numcalls

count1()函式的運

硬幣找錢問題

設有6種不同面值的硬幣,各硬幣的面值分別為5分 1角 2角 5角 1元和2元。現在要用這些面值的硬幣來購物和找錢。購物時可以使用的各種面值的硬幣個數存於陣列coins 1 6 中,假設商店裡各面值的硬幣有足夠多。對於給定的付款金額,計算使用硬幣個數最少的交易方案。輸入資料的每一行有6個整數和乙個有2...

Problem 找錢問題

time limit 1 sec memory limit 64 mb submit 12397 solved 3423 買火車票時經常會碰到找錢問題。售票員手中有50 20 10 5 1元的錢幣,你知道怎麼找錢才能使找回的零錢張數最少嗎?多組測試資料,輸入需要找錢的錢數 輸出按下面格式 第一行輸出...

硬幣找錢問題

硬幣找錢問題 time limit 1000ms memory limit 65536k total submit 3 accepted 1 description 設有6 種不同面值的硬幣,各硬幣的面值分別為5 分,1 角,2 角,5 角,1 元,2元。現要用這些面值的硬幣來購物和找錢。購物時可以...