pub fn fractional_knapsack(items: &[Item], capacity: f64) -> f64Expand description
Bo’linadigan xalta masalasi (fractional knapsack).
Buyumlarni bo’lish mumkin (masalan, un, shakar, oltin kukuni).
Sig’imi capacity bo’lgan xaltaga maksimal qiymat joylang.
Ochko’z qoida: qiymat / og'irlik nisbati eng katta buyumdan boshlang.
Bu yerda ochko’zlik isbotlangan optimal — chunki buyumni bo’lish mumkin.
- Time: O(n log n), Space: O(n).
§Misol
use rust_algorithms::greedy::{fractional_knapsack, Item};
let buyumlar = vec![
Item::new(60.0, 10.0), // nisbat 6.0
Item::new(100.0, 20.0), // nisbat 5.0
Item::new(120.0, 30.0), // nisbat 4.0
];
let qiymat = fractional_knapsack(&buyumlar, 50.0);
assert!((qiymat - 240.0).abs() < 1e-9); // 60 + 100 + 120*(20/30)