Advertisement
atulsingh7890

TBC

Jun 12th, 2021
1,094
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.84 KB | None | 0 0
  1. https://leetcode.com/contest/biweekly-contest-54/problems/largest-magic-square/
  2. class Solution {
  3.    
  4. public:
  5.     int largestMagicSquare(vector<vector<int>>& grid) {
  6.        
  7.         using Matrix = std::vector<std::vector<long long>>;
  8.        
  9.         Matrix row_sum(grid.size(), std::vector<long long>(grid[0].size(), 0));
  10.         Matrix col_sum(grid.size(), std::vector<long long>(grid[0].size(), 0));
  11.         Matrix p_diag_sum(grid.size(), std::vector<long long>(grid[0].size(), 0));
  12.         Matrix s_diag_sum(grid.size(), std::vector<long long>(grid[0].size(), 0));
  13.        
  14.         row_sum[0][0] = grid[0][0];
  15.         col_sum[0][0] = grid[0][0];
  16.         p_diag_sum[0][0] = grid[0][0];
  17.         s_diag_sum[0][0] = grid[0][0];
  18.  
  19.        
  20.         // first row
  21.         for(int i = 1; i < grid[0].size(); ++i) {
  22.             row_sum[0][i] = row_sum[0][i-1] + grid[0][i];
  23.         }
  24.        
  25.         // first col
  26.         for(int i = 1; i < grid.size(); ++i) {
  27.             row_sum[i][0] = row_sum[i-1][0] + grid[i][0];
  28.         }
  29.            
  30.         for(int i = 1; i < grid.size(); ++i) {
  31.             for(int j = 1; j < grid[0].size(); ++j) {
  32.                 row_sum[i][j] = row_sum[i][j-1] + grid[i][j];
  33.                 col_sum[i][j] = col_sum[i-1][j] + grid[i][j];
  34.                 p_diag_sum[i][j] = p_diag_sum[i-1][j-1] + grid[i][j];
  35.                 s_diag_sum[i][j] =
  36.             }
  37.         }
  38.        
  39.         int max_size = std::min(grid.size(), grid[0].size());
  40.         for(int sq_size = max_size; sq_size > 0; --sq_size) {
  41.             for(int top_left_r = 0; top_left_r + max_size < grid.size(); ++top_left_r) {
  42.                 for(int top_left_c = 0; top_left_c + max_size < grid[0].size(); ++top_left_c) {
  43.                    
  44.                    
  45.                    
  46.                 }
  47.             }
  48.         }
  49.        
  50.     }
  51. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement