তিনটি অ্যারে curr_a, curr_b, conv_rate দিয়ে মুদ্রা কনভার্সন রেট দেওয়া থাকে। সোর্স থেকে ডেস্টিনেশন মুদ্রার কনভার্সন রেট বের করুন। পাথ না থাকলে ০ রিটার্ন করুন।
ইনপুট উদাহরণ
src = "INR", dest = "JPY"
curr_a = ["INR", "GBP", "EUR"]
curr_b = ["GBP", "EUR", "JPY"]
conv_rate = [0.009, 1.17, 129.67]
আউটপুট: 1.3654250999999997 (INR → GBP → EUR → JPY)
অ্যালগরিদম
বেলম্যান-ফোর্ড বা রিল্যাক্সেশন বেসড অ্যাপ্রোচ ব্যবহার করে সব সম্ভাব্য পাথ রিল্যাক্স করা হয় যতক্ষণ না কনভার্জেন্স হয়।
পাইথন কোড
from collections import defaultdict
def solve(src, dest, curr_a, curr_b, conv_rate):
temp = defaultdict(float)
temp[src] = 1.0
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]))
ব্যাখ্যা
এটি মূলত একটি গ্রাফে সবচেয়ে বড় গুণনফল পথ বের করার সমস্যা। নেগেটিভ সাইকেল চেক করার প্রয়োজন নেই কারণ রেট পজিটিভ।