ฉันกำลังพยายามเขียนการใช้งานที่แตกต่างกันสำหรับปัญหากระเป๋าเป้สะพายหลังที่เป็นเศษส่วน
สำหรับสิ่งนี้ฉันมี 2 อาร์เรย์:
- ค่านิยม
- ตุ้มน้ำหนัก
ค่าองค์ประกอบ[n] สอดคล้องกับน้ำหนักองค์ประกอบ[n] ดังนั้นเราจึงสามารถคำนวณ value_per_unit ได้ดังนี้:
for I in range(values):
value_per_unit.append(values[I]/weights[I])
value_per_unit.sort()
ตอนนี้ฉันต้องการให้อาร์เรย์ 2 ตัว (ค่าและน้ำหนัก) เรียงลำดับตามอาร์เรย์ value_per_unit
eg: If
- ค่า = [60, 100, 120]
- น้ำหนัก = [20, 50, 30]
แล้ว
value_per_unit = [3.0, 2.0, 4.0]
และค่าต่างๆ_per_unit_sorted จะเป็น [2.0, 3.0, 4.0]
ฉันต้องการอาร์เรย์ค่าและน้ำหนักเพื่อให้เป็น:
- ค่า_เรียงลำดับ = [100,60,120]
- น้ำหนัก_เรียงลำดับ = [50,20,30]
มีวิธีใดที่จะบรรลุเป้าหมายนี้โดยใช้ฟังก์ชันแลมบ์ดาแบบง่าย ๆ หรือไม่?
ฉันยังสามารถทำอะไรแบบนี้ได้ แต่ดูเหมือนว่าจะไม่มีประสิทธิภาพอย่างมากทุกครั้งที่ต้องเข้าถึงองค์ประกอบต่างๆ:
weights[(value_per_unit_sorted.index(max(value_per_unit_sorted)))]