मान लीजिए हमें तीन सरणियाँ दी गई हैं; 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 दी गई हैं। हमें स्रोत से गंतव्य तक रूपांतरण की दर का पता लगाना है। हम मान को आउटपुट के रूप में वापस करते हैं, और यदि यह संभव नहीं है तो हम 0 लौटाते हैं।
इसलिए, यदि इनपुट src ="INR", dest ="JPY", curr_a =["INR", "GBP", "EUR"], curr_b =["GBP", "EUR", "JPY"] जैसा है। , conv_rate =[0.009, 1.17, 129.67], तो आउटपुट 1.36542509999999997
होगाइसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- अस्थायी:=एक नया नक्शा जिसमें डिफ़ॉल्ट मान के रूप में 0 शामिल है
- अस्थायी[src] :=1
- मैं :=0
- p :=सच
- जबकि p और i <=तापमान का आकार, करते हैं
- p :=असत्य
- प्रत्येक x के लिए curr_a, y in curr_b, और z conv_rate में, करें
- यदि अस्थायी [x] * z> अस्थायी [y] शून्य नहीं है, तो
- अस्थायी[y] :=अस्थायी[x] * z
- p :=सच
- i :=i + 1
- यदि अस्थायी [x] * z> अस्थायी [y] शून्य नहीं है, तो
- अगर मैं <=तापमान का आकार, तो
- वापसी अस्थायी[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