From fa937a142f9baa76a732e05318086a6c72e62a55 Mon Sep 17 00:00:00 2001 From: li_chx Date: Thu, 30 Apr 2026 08:58:35 +0800 Subject: [PATCH] =?UTF-8?q?3742.=20=E7=BD=91=E6=A0=BC=E4=B8=AD=E5=BE=97?= =?UTF-8?q?=E5=88=86=E6=9C=80=E5=A4=A7=E7=9A=84=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.rs | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/src/main.rs b/src/main.rs index 711476d..fdbf375 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,37 +4,38 @@ mod arr; struct Solution {} impl Solution { - pub fn min_operations(grid: Vec>, x: i32) -> i32 { - if grid.len() == 1 && grid[0].len() == 1 { - return 0; + pub fn max_path_score(grid: Vec>, k: i32) -> i32 { + let k = (k as usize + 1).min(grid.len() + grid[0].len() + 1); + let mut dp = vec![vec![vec![-1;k]; grid[0].len()]; grid.len()]; + for i in 0..k { + dp[0][0][i] = 0; } - let mut arr = vec![0; grid[0].len() * grid.len()]; for i in 0..grid.len() { - for j in 0..grid[i].len() { - arr[i * grid[0].len() + j] = grid[i][j]; - } - } - arr.sort_unstable(); - let a = arr[arr.len() / 2]; - let check = |grid: &Vec>, a: i32| { - let mut ans = 0; - for i in 0..grid.len() { - for j in 0..grid[i].len() { - if grid[i][j].abs_diff(a) as i32 % x != 0 { - return -1; + for j in 0..grid[0].len() { + let cost = if grid[i][j] > 0 { 1 } else { 0 }; + let score = grid[i][j]; + for p in cost..k { + let mut ans = -1; + if j > 0 && dp[i][j - 1][p - cost] != -1 { + ans = dp[i][j - 1][p - cost]; } - ans += grid[i][j].abs_diff(a) as i32 / x; + if i > 0 && dp[i - 1][j][p - cost] != -1 { + ans = ans.max(dp[i - 1][j][p - cost]); + } + dp[i][j][p] = dp[i][j][p].max(if ans == -1 { -1 } else { ans + score }); } } - ans - }; - check(&grid, a) + } + *dp[grid.len() - 1][grid[0].len() - 1] + .iter() + .max() + .unwrap_or(&0) } } fn main() { println!( "{:?}", - Solution::min_operations(make_matrix("[[1,1,100]]"), 1) + Solution::max_path_score(make_matrix("[[0, 1],[2, 0]]"), 1) ); }