MCPcopy Create free account
hub / github.com/QMHTMY/RustBook / rec_mc2

Function rec_mc2

publication/code/chapter05/rec_mc2.rs:3–26  ·  view source on GitHub ↗
(cashes: &[u32], amount: u32, min_cashes: &mut [u32])

Source from the content-addressed store, hash-verified

1// rec_mc2.rs
2
3fn rec_mc2(cashes: &[u32], amount: u32, min_cashes: &mut [u32]) -> u32 {
4 // 全用 1 元纸币的最小找零纸币数量
5 let mut min_cashe_num = amount;
6
7 if cashes.contains(&amount) {
8 // 收集和当前待找零值相同的币种
9 min_cashes[amount as usize] = 1;
10 return 1;
11 } else if min_cashes[amount as usize] > 0 {
12 // 找零值 amount 有最小找零纸币数,直接返回
13 return min_cashes[amount as usize];
14 } else {
15 for c in cashes.iter().filter(|&&c| c <= amount).collect::<Vec<&u32>>() {
16 let cashe_num = 1 + rec_mc2(cashes, amount - c, min_cashes);
17 // 更新最小找零纸币数
18 if cashe_num < min_cashe_num {
19 min_cashe_num = cashe_num;
20 min_cashes[amount as usize] = min_cashe_num;
21 }
22 }
23 }
24
25 min_cashe_num
26}
27
28fn main() {
29 let amount = 90u32;

Callers 1

mainFunction · 0.70

Calls 2

containsMethod · 0.45
iterMethod · 0.45

Tested by

no test coverage detected