Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- #define M 8
- #define N 6
- int Solve(int Mat[1003][1003], int m, int n, int &max_size)
- {
- if (m == 0 || n == 0){
- max_size = max(max_size, Mat[m][n]);
- return Mat[m][n];
- }
- int left = Solve(Mat, m, n - 1, max_size);
- int top = Solve(Mat, m - 1, n, max_size);
- int top_left = Solve(Mat, m - 1, n - 1, max_size);
- int size = 0;
- if (Mat[m][n] == 2) {
- size = 1 + min (min(top, left), top_left);
- }
- max_size = max(max_size, size);
- return size;
- }
- int mat[1003][1003];
- int main()
- {
- int n;
- cin >> n;
- for(int i = 0; i < n; ++i)
- for(int j = 0; j < n; ++j)
- cin >> mat[i][j];
- int size = 0;
- Solve(mat, n-1, n-1, size);
- cout << size*size;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement