Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- https://leetcode.com/contest/biweekly-contest-54/problems/largest-magic-square/
- class Solution {
- public:
- int largestMagicSquare(vector<vector<int>>& grid) {
- using Matrix = std::vector<std::vector<long long>>;
- Matrix row_sum(grid.size(), std::vector<long long>(grid[0].size(), 0));
- Matrix col_sum(grid.size(), std::vector<long long>(grid[0].size(), 0));
- Matrix p_diag_sum(grid.size(), std::vector<long long>(grid[0].size(), 0));
- Matrix s_diag_sum(grid.size(), std::vector<long long>(grid[0].size(), 0));
- row_sum[0][0] = grid[0][0];
- col_sum[0][0] = grid[0][0];
- p_diag_sum[0][0] = grid[0][0];
- s_diag_sum[0][0] = grid[0][0];
- // first row
- for(int i = 1; i < grid[0].size(); ++i) {
- row_sum[0][i] = row_sum[0][i-1] + grid[0][i];
- }
- // first col
- for(int i = 1; i < grid.size(); ++i) {
- row_sum[i][0] = row_sum[i-1][0] + grid[i][0];
- }
- for(int i = 1; i < grid.size(); ++i) {
- for(int j = 1; j < grid[0].size(); ++j) {
- row_sum[i][j] = row_sum[i][j-1] + grid[i][j];
- col_sum[i][j] = col_sum[i-1][j] + grid[i][j];
- p_diag_sum[i][j] = p_diag_sum[i-1][j-1] + grid[i][j];
- s_diag_sum[i][j] =
- }
- }
- int max_size = std::min(grid.size(), grid[0].size());
- for(int sq_size = max_size; sq_size > 0; --sq_size) {
- for(int top_left_r = 0; top_left_r + max_size < grid.size(); ++top_left_r) {
- for(int top_left_c = 0; top_left_c + max_size < grid[0].size(); ++top_left_c) {
- }
- }
- }
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement