Saya mencoba menulis implementasi berbeda untuk masalah ransel pecahan.
Untuk ini saya punya 2 array:
- Nilai-nilai
- beban
Nilai elemen[n] sesuai dengan bobot elemen[n]. Jadi kita dapat menghitung value_per_unit sebagai:
for I in range(values):
value_per_unit.append(values[I]/weights[I])
value_per_unit.sort()
Saya sekarang membutuhkan 2 array (nilai dan bobot) untuk diurutkan berdasarkan array value_per_unit
eg: If
- nilai = [60, 100, 120]
- bobot = [20, 50, 30]
Kemudian
nilai_per_unit = [3.0, 2.0, 4.0]
dan nilai_per_unit_sorted akan menjadi [2.0, 3.0, 4.0]
Saya memerlukan array nilai dan bobot untuk menjadi:
- nilai_diurutkan = [100,60,120]
- bobot_diurutkan = [50,20,30]
Apakah ada cara untuk mencapai hal ini dengan menggunakan fungsi lambda sederhana?
Saya masih dapat melakukan hal seperti ini, tetapi tampaknya sangat tidak efisien setiap kali saya perlu mengakses elemen:
weights[(value_per_unit_sorted.index(max(value_per_unit_sorted)))]