21/08/12 00:24:49.53 pB2NXWq+.net
>>603
メモ化するならこう
fn main() {
let mut input_line = String::new();
std::io::stdin().read_line(&mut input_line).unwrap();
let input_numbers: Vec<i32> = input_line.split_whitespace().filter_map(|s| s.parse().ok()).collect();
let n = input_numbers[0];
let abc = &input_numbers[1..];
let mut memo: Vec<i32> = vec!(1);
memo.resize((n + 1) as usize, -1);
println!("{}", count(n, abc, &mut memo));
}
fn count(n: i32, abc: &[i32], memo: &mut [i32]) -> i32 {
abc.iter().map(|a| { let m = n - a; if m < 0 { 0 } else { if memo[m as usize] == -1 { memo[m as usize] = count(m, abc, memo); }; memo[m as usize] }}).sum()
}