// find the largest sum of elements in an array, that is divisible by given number n.
fn main() {
let nums: Vec<u64> = vec![5, 1, 4, 5, 6];
// Dynamic Programming
let mut dp: Vec<u64> = vec![0u64; nums.len()];
let n = 5u64;
for num in nums {
for max_sum in dp.iter() {
let mut max_sum_next = max_sum + i;
let mut re_next = max_sum_next % n;
if max_sum_next > dp[re_next as usize] {
dp[re_next as usize] = max_sum_next;
}
}
}
assert_eq!(20u64, dp[0]);
}
error[E0502]: cannot borrow `dp` as mutable because it is also borrowe
d as immutable
--> k.rs:13:17
|
| for max_sum in dp.iter() {
| -- immutable borrow occurs here
...
| dp[re_next as usize] = max_sum_next;
| ^^ mutable borrow occurs here
| }
| }
| - immutable borrow ends here
error: aborting due to previous error
I have tried iter()
| iter_mut()
| into_iter()
, but the compiler cannot pass the borrow checker.