def backpack_greedy(weights, values, total_weight):
data = []
for i in range(len(weights)):
data.append({
"v": values[i],
"w": weights[i],
"cost": float(values[i])/float(weights[i])
})
data = sorted(data, key=lambda x: x['cost'], reverse=True)
print(f'DEBUG: {data}')
remain = total_weight
result = 0
result_list = []
i = 0
while i < len(data):
if (data[i]['w'] <= remain):
remain -= data[i]['w']
result += data[i]['v']
result_list.append(data[i])
print(f"DEBUG: adding {data[i]} - total value = {result} remaining space = {remain}")
i += 1
return result, result_list
values = [60, 100, 120, 30, 600]
weights = [10, 20, 30, 5, 20]
total_weight = 50
print(backpack_greedy(weights, values, total_weight))
def coin_change_greedy(coins, value):
tab_result = []
while value > 0:
highest_coin = 0
for c in coins:
if c <= value and c > highest_coin:
highest_coin = c
value -= highest_coin
tab_result.append(highest_coin)
return tab_result
coins = [1,2,5,10,20]
for value in range(30):
change = coin_change_greedy(coins, value)
print(value, change)