python整钱兑换零钱基础写法_算法之Python实现 - 001 : 换钱的最少货币数

【题目】给定数组arr,arr中所有的值都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim代表要找的钱数,求组成aim的最少货币数。【代码1】:时间与额外空间复杂度O(N*aim)import numpy as npfrom xmlrpc.client import MAXINTdef mincoin(arr,aim):if len(arr)<0:...
摘要由CSDN通过智能技术生成

【题目】给定数组arr,arr中所有的值都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim代表要找的钱数,求组成aim的最少货币数。

【代码1】:时间与额外空间复杂度O(N*aim)

import numpy as np

from xmlrpc.client import MAXINT

def mincoin(arr,aim):

if len(arr)<0:

print("No coin provided for change!")

arr.sort()

arr.reverse()

if aim == 0:

print("Aim is 0, no need to change!")

dp = np.zeros((len(arr),aim+1))

i = 0

j = 0

left = aim

maxval = MAXINT

for j in range(1,aim+1):

dp[0][j] = maxval

if j-arr[0] >=0 and dp[0][j-arr[0]] != maxval:

dp[0][j] = dp[0][j-arr[0]]+1

for i in range(1,len(arr)):

for j in range(1,aim+1):

left = maxval

if j-arr[i] >=0 and dp[i][j-arr[i]] != maxval:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值