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

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)




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值