From 8a381984c92e766526bb55828343bdaf29f7bfb7 Mon Sep 17 00:00:00 2001 From: li_chx Date: Wed, 25 Mar 2026 08:54:24 +0800 Subject: [PATCH] =?UTF-8?q?3546.=20=E7=AD=89=E5=92=8C=E7=9F=A9=E9=98=B5?= =?UTF-8?q?=E5=88=86=E5=89=B2=20I?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.rs | 55 +++++++++++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/src/main.rs b/src/main.rs index 273b33b..14706d9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,40 +1,41 @@ struct Solution; mod arr; impl Solution { - fn get_product(a: i32, b: i32) -> i32 { - ((a as i64 * b as i64) % 12345) as i32 - } - pub fn construct_product_matrix(mut grid: Vec>) -> Vec> { - let mut arr = vec![0; grid.len() * grid[0].len()]; - let mut ans = vec![0; grid.len() * grid[0].len()]; + pub fn can_partition_grid(grid: Vec>) -> bool { + let mut sum = 0_i64; + let mut line = Vec::::with_capacity(grid.len()); for i in 0..grid.len() { - for j in 0..grid[0].len() { - arr[i * grid[0].len() + j] = grid[i][j]; + let mut cnt = 0_i64; + for j in 0..grid[i].len() { + cnt += grid[i][j] as i64; + } + sum += cnt; + line.push(cnt); + } + let mut lsum = line[0]; + for i in 1..line.len() { + if lsum * 2 == sum { + return true; + } + lsum += line[i]; + } + let mut column = 0_i64; + for i in 0..grid[0].len() - 1 { + let mut cnt = 0_i64; + for j in 0..grid.len() { + cnt += grid[j][i] as i64; + } + column += cnt; + if column * 2 == sum { + return true; } } - ans[0] = arr[0]; - for i in 1..arr.len() { - ans[i] = Solution::get_product(arr[i], ans[i - 1]); - } - let mut last = arr[ans.len() - 1]; - for i in (1..arr.len()-1).rev() { - let x = arr[i]; - arr[i] = Solution::get_product(ans[i-1], last); - last = Solution::get_product(last, x) - } - arr[0] = last % 12345; - arr[ans.len() - 1] = ans[ans.len() - 2] % 12345; - for i in 0..grid.len() { - for j in 0..grid[0].len() { - grid[i][j] = arr[i * grid[0].len() + j]; - } - } - grid + false } } fn main() { - let result = Solution::construct_product_matrix(arr::make_matrix(r#"[[1,2],[3,4]]"#)); + let result = Solution::can_partition_grid(arr::make_matrix(r#"[[42047],[57775],[99822]]"#)); println!("{:?}", result); } /*