用Python编写程序查找两种货币转换率
假设我们有三个数组; curr_a,curr_b 和 conv_rate。第一个数组包含一些货币名称,第二个数组也是如此,数组conv_rate包含curr_a [i]到cuur_b [i]之间的转换率。conv_rate [i]的项是curr_a [i]和curr_b [i]之间的转换率。现在,我们得到两个货币src和dest。我们必须找出从src到dest的转换率。我们将值作为输出返回,如果不可能则返回0。
因此,如果输入如下:src=”INR”,dest=”JPY”,curr_a=[“INR”, “GBP”, “EUR”],curr_b=[“GBP”, “EUR”, “JPY”],conv_rate=[0.009,1.17,129.67],则输出为1.3654250999999997。
解决此问题,我们将按照以下步骤进行:
- temp:包含默认值0的新映射
- temp[src] =1
- i=0
- p=True
- while p and i<=temp大小,执行
- p=False
- 对于数组curr_a中的每个x,数组curr_b中的每个y和数组conv_rate中的每个z,执行以下操作:
- 如果temp[x] * z>temp[y]非零,则
- temp[y]=temp[x] * z
- p=True
- i=i + 1
- 如果i <= temp大小,则
- 返回temp [dest]
- 否则,
- 返回-1
示例
让我们看以下实现以更好地理解。
from collections import defaultdict
def solve(src, dest, curr_a, curr_b, conv_rate):
temp = defaultdict(int)
temp[src] = 1
i = 0
p = True
while p and i <= len(temp):
p = False
for x, y, z in zip(curr_a, curr_b, conv_rate):
if temp[x] * z > temp[y]:
temp[y] = temp[x] * z
p = True
i += 1
return temp[dest] if i <= len(temp) else -1
print(solve("INR", "JPY", ["INR", "GBP", "EUR"], ["GBP", "EUR", "JPY"], [0.009, 1.17, 129.67]))
输入
"INR", "JPY", ["INR", "GBP", "EUR"], ["GBP", "EUR", "JPY"], [0.009, 1.17, 129.67]
输出
1.3654251