Page 259 - Modul Ajar Informatika SMA XII
P. 259
#include <vector>
#include <algorithm>
int main()
{
int n;
// Membaca masukan
scanf(“%d”, &n);
std::vector<float> bobot;
std::vector<float> nilai;
float kapasitas;
for(int i=0; i<n; i++)
{
float bobot_sekarang;
scanf(“%f”, &bobot_sekarang);
bobot.push_back(bobot_sekarang);
}
for(int i=0; i<n; i++)
{
float nilai_sekarang;
scanf(“%f”, &nilai_sekarang);
nilai.push_back(nilai_sekarang);
}
scanf(“%f”, &kapasitas);
// Menghitung rasio nilai/bobot
std::vector<float> nilai_per_bobot;
for(int i=0; i<n; i++)
{
nilai_per_bobot.push_back(nilai[i]/bobot[i]);
}
// Mengurutkan barang berdasarkan nilai/bobot (menurun)
std::vector<int> index;
for(int i=0; i<n; i++)
index.push_back(i);
sort(index.begin(), index.end(), [&nilai
per_bobot](int index1, int index2)
{
return nilai_per_bobot[index1] > nilai_per_bobot[index2];
}
);
float total_bobot_terpilih = 0;
float total_nilai_terpilih = 0;
// Memilih barang sampai mendapatkan nilai optimal
for (int i=0; i<n; i++)