From d705a588f8dd892ef539f8718c1b72369d016007 Mon Sep 17 00:00:00 2001 From: jackfiled Date: Tue, 21 Jan 2025 11:33:04 +0800 Subject: [PATCH] 20250121 finished. --- src/problem/mod.rs | 2 + ...218_maximum_value_of_k_coins_from_piles.rs | 45 +++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 src/problem/p2218_maximum_value_of_k_coins_from_piles.rs diff --git a/src/problem/mod.rs b/src/problem/mod.rs index 3c6f7e6..c853fda 100644 --- a/src/problem/mod.rs +++ b/src/problem/mod.rs @@ -444,3 +444,5 @@ mod p3287_find_the_maximum_sequence_value_of_array; mod p2266_count_number_of_texts; mod p2239_find_closest_number_to_zero; + +mod p2218_maximum_value_of_k_coins_from_piles; diff --git a/src/problem/p2218_maximum_value_of_k_coins_from_piles.rs b/src/problem/p2218_maximum_value_of_k_coins_from_piles.rs new file mode 100644 index 0000000..3ac9a2e --- /dev/null +++ b/src/problem/p2218_maximum_value_of_k_coins_from_piles.rs @@ -0,0 +1,45 @@ +/** + * [2218] Maximum Value of K Coins From Piles + */ +pub struct Solution {} + +// submission codes start here + +impl Solution { + pub fn max_value_of_coins(piles: Vec>, k: i32) -> i32 { + let k = k as usize; + let mut dp = vec![-1; k + 1]; + dp[0] = 0; + + for pile in piles { + for i in (1..=k).rev() { + let mut value = 0; + + for t in 1..=pile.len() { + value += pile[t - 1]; + + if i >= t && dp[i - t] != -1 { + dp[i] = dp[i].max(dp[i - t] + value); + } + } + } + } + + dp[k] + } +} + +// submission codes end + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_2218() { + assert_eq!( + 101, + Solution::max_value_of_coins(vec![vec![1, 100, 3], vec![7, 8, 9]], 2) + ); + } +}