मान लीजिए हमें तीन सरणियाँ दी गई हैं: curr_a, curr_b, और conv_rate। पहली सरणी में कुछ मुद्रा नाम हैं और दूसरी में भी, और सरणी conv_rate में curr_a[i] से curr_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] := 1i := 0p := True- जब
p और i <= temp का आकार, करें:p := Falsecurr_aमें प्रत्येकx,curr_bमेंy, औरconv_rateमेंzके लिए, करें:- यदि
temp[x] * z > temp[y]शून्येतर है, तो:temp[y] := temp[x] * zp := 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