题解 | #称砝码#
称砝码
http://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
解题思路:
使用Vec搭配BTreeSet,Vecm中存储的是所有的砝码的枚举,BTreeSet set 中存储的是所有不重复的质量加和方案。
use std::io;
use std::collections::BTreeSet;
fn main() {
let mut s = String::new();
io::stdin().read_line(&mut s).expect("Failed to read line");
let _n = s.trim().parse::<u32>().unwrap_or(1);
s.clear();
io::stdin().read_line(&mut s).expect("Failed to read line");
let mut v = Vec::with_capacity(10);
for i in s.trim().split(" ") {
v.push(i.trim().parse::<u32>().unwrap());
}
s.clear();
io::stdin().read_line(&mut s).expect("Failed to read line");
let mut m = vec![];
let mut j = 0;
for i in s.trim().split(" ") {
for _i in 0..(i.trim().parse::<usize>().unwrap()) {
m.push(v[j]);
}
j += 1;
}
let mut set:BTreeSet<u32> = BTreeSet::new();
set.insert(0);
for i in 0..m.len() {
let s = BTreeSet::from(set.clone());
for j in s.iter() {
set.insert(*j + m[i]);
}
}
println!("{}",set.len());
}
用 Rust 刷华为机试HJ 文章被收录于专栏
用 Rust 刷 HJ100 题,只需要懂基础 Rust 语法就能看懂