欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python基础编程_数制转换的递归,贪婪算法找零钱

程序员文章站 2022-07-07 23:42:57
python基础编程_数制转换的递归,贪婪算法找零钱。 def exchange(num,base): if num==0: return...

python基础编程_数制转换的递归,贪婪算法找零钱。

def exchange(num,base):
    if num==0:
        return ''
    else:#修改return的前后顺序,结果也随之改变,正序和逆序
        return exchange(int(num/base),base)+str(num%base)
   
#递归的方式数制转换
num=121
base=2
bitnum=exchange(num,base)
print(bitnum)

贪婪算法实现找零钱,总是先与较大的面额进行比较,尽可能使钱币的张数最少

a=[100,50,10,5,2,1,0.5,0.2,0.1]
num=np.zeros(len(a))
money=float(input())
i=0
#首先判断输入与最大面额的大小关系,如果大于最大面额,那么
#总钱数减去最大面额,同时对应的数量加一,再次循环,仍与最大面额
#比较,若大了,操作同上,若小了,i加一,下次循环与次大的面额比较
while(money>0 and i<=len(a)-1):
    if money>a[i]:
        money=money-a[i]
        num[i]+=1
    elif money>0 and money<0.1:
        num[len(a)-1]+=1
        break
    else:
        i+=1
    
print(num)