zhuyumu 发表于 2017-5-7 09:29:44

python递归做1元钱换零钱

  给定足够的 5角,2角,1角,5分,2分,1分这六种零钱,将1元(100)换成零钱,一共有多少种换法?

def split(n,j):
v=
if n<0:
return 0
if n==0:
return 1
if j<0:
return 0
return split(n,j-1)+split(n-v,j)
  执行:

>>> split(100,5)
4562
>>>
  可以看到具体方案的方法:

def split(n,j,result):
v=
if n<0:
return 0
if n==0:
print "方案:"+result
return 1
if j<0:
return 0
return split(n,j-1,result)+split(n-v,j,result+str(v)+"|")
  执行(以1角为例):

>>> split(10,5,"")
方案:10|
方案:5|5|
方案:2|2|2|2|2|
方案:1|2|2|5|
方案:1|1|2|2|2|2|
方案:1|1|1|2|5|
方案:1|1|1|1|2|2|2|
方案:1|1|1|1|1|5|
方案:1|1|1|1|1|1|2|2|
方案:1|1|1|1|1|1|1|1|2|
方案:1|1|1|1|1|1|1|1|1|1|
11
>>>
  over
页: [1]
查看完整版本: python递归做1元钱换零钱