pub fn coin_change_greedy(coins: &[u64], amount: u64) -> Option<Vec<u64>>Expand description
Qaytim berish (coin change) — ochko’z yondashuv.
Har safar eng katta sig’adigan tangani olamiz.
⚠️ Diqqat: bu har doim ham optimal emas! U faqat “kanonik” tanga tizimlarida to’g’ri ishlaydi (masalan, 1, 5, 10, 25, 50, 100).
Qarshi misol: tangalar
[1, 3, 4], summa6. Ochko’z: 4 + 1 + 1 = 3 ta tanga. Optimal: 3 + 3 = 2 ta. To’g’ri javob uchuncrate::dp::coin_change_min(DP) ni ishlating.
- Time: O(n log n + summa/eng_kichik_tanga).
§Misol
use rust_algorithms::greedy::coin_change_greedy;
// kanonik tizim — to'g'ri ishlaydi
assert_eq!(coin_change_greedy(&[1, 5, 10, 25], 63), Some(vec![25, 25, 10, 1, 1, 1]));
// kanonik bo'lmagan tizim — optimal emas!
assert_eq!(coin_change_greedy(&[1, 3, 4], 6), Some(vec![4, 1, 1])); // 3 ta, optimal 2 ta
assert_eq!(coin_change_greedy(&[5, 10], 3), None); // yechim yo'q