สมมติว่าเราได้รับสามอาร์เรย์ curr_a, curr_b และ conv_rate อาร์เรย์แรกมีชื่อสกุลเงินบางชื่อ เช่นเดียวกับอาร์เรย์ที่สอง และอาร์เรย์ conv_rate มีอัตราการแปลงภายในรายการ curr_a[i] ถึง cuur_b[i] รายการของ conv_rate[i] คืออัตรา Conversion ระหว่าง 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 เป็นค่าเริ่มต้น
- อุณหภูมิ[src] :=1
- ผม :=0
- p :=จริง
- ในขณะที่ p และ i <=ขนาดของอุณหภูมิ ให้ทำ
- p :=ผิด
- สำหรับแต่ละ x ใน curr_a, y ใน curr_b และ z ใน conv_rate ให้ทำ
- ถ้า temp[x] * z> temp[y] ไม่ใช่ศูนย์ ดังนั้น
- temp[y] :=temp[x] * z
- p :=จริง
- ผม :=ผม + 1
- ถ้า temp[x] * z> temp[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