python 货币合适_算法之Python实现 - 001 : 换钱的最少货币数

 2023-09-17 阅读 26 评论 0

摘要:【题目】给定数组arr,arr中所有的值都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim代表要找的钱数,求组成aim的最少货币数。【代码1】:时间与额外空间复杂度O(N*aim)import numpy as npfrom

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

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

import numpy as np

from xmlrpc.client import MAXINT

def mincoin(arr,aim):

python算法题,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!")

量化 python。dp = np.zeros((len(arr),aim+1))

i = 0

j = 0

left = aim

maxval = MAXINT

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

python的int,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

python算法详解?if j-arr[i] >=0 and dp[i][j-arr[i]] != maxval:

left = dp[i][j-arr[i]]+1

dp[i][j] = min(left,dp[i-1][j])

print('Need ',int(dp[len(arr)-1][aim]),' Coins.')

# ===CALL === #

a = [3,5,2]

python 排序?tar = 20

mincoin(a,tar)

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

import numpy as np

from xmlrpc.client import MAXINT

def mincoin(arr,aim):

python币,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!")

python 类,dp = np.zeros((1,aim+1))[0]

i = 0

j = 0

maxval = MAXINT

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

dp[j] = maxval

python数据结构,if j-arr[0] >=0 and dp[j-arr[0]] != maxval:

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

left = 0

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

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

left = maxval

数字货币跨期套利python,if j-arr[i] >=0 and dp[j-arr[i]] != maxval:

left = dp[j-arr[i]]+1

dp[j] = min(left,dp[j])

#print(dp)

print('Need ',int(dp[aim]),' Coins.')

# ===CALL === #

用python进行货币转换、a = [5,2,3]

tar = 20

mincoin(a,tar)

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

在原书也就是【代码2】的基础上,下面的执行效率会更高一点点,但是这种算法对于【代码1】的复杂度是有问题的。

import numpy as np

python货币转换程序代码,from xmlrpc.client import MAXINT

def mincoin(arr,aim):

if len(arr)<0:

print("No coin provided for change!")

arr.sort()

arr.reverse()

python算法大全,if aim == 0:

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

dp = np.zeros((1,aim+1))[0]

i = 0

j = 0

maxval = MAXINT

python外汇交易,for j in range(1,aim+1):

dp[j] = maxval

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

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

left = 0

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

for j in range(j-arr[i],aim+1):

left = maxval

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

left = dp[j-arr[i]]+1

dp[j] = min(left,dp[j])

#print(dp)

print('Need ',int(dp[aim]),' Coins.')

# ===CALL === #

a = [5,2,3]

tar = 20

mincoin(a,tar)

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/72352.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息