解题思路:
使用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());
}