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

Function dp_rec_mc

code/chapter04/dp_rec_mc.rs:3–24  ·  view source on GitHub ↗
(cashes: &[u32], amount: u32, min_cashes: &mut [u32])

Source from the content-addressed store, hash-verified

1// dp_rec_mc.rs
2
3fn dp_rec_mc(cashes: &[u32], amount: u32, min_cashes: &mut [u32]) -> u32 {
4 // 动态收集从 1 到 amount 的最小找零纸币数
5 for denm in 1..=amount {
6 // 此 min_cashe_num 等于全用 1 元纸币找零的纸币数
7 let mut min_cashe_num = denm;
8 for c in cashes.iter()
9 .filter(|&c| *c <= denm)
10 .collect::<Vec<&u32>>() {
11 let index = (denm - c) as usize;
12
13 // 加 1 是因为当前最小找零数等于上一最小找零数加 1 张 c 面额纸币
14 let cashe_num = min_cashes[index] + 1;
15 if cashe_num < min_cashe_num {
16 min_cashe_num = cashe_num;
17 }
18 }
19 min_cashes[denm as usize] = min_cashe_num;
20 }
21
22 // 因为收集了所有的最小找零纸币数,所以直接返回
23 min_cashes[amount as usize]
24}
25
26fn main() {
27 let amount = 81u32;

Callers 1

mainFunction · 0.70

Calls 1

iterMethod · 0.45

Tested by

no test coverage detected