Largest square formed in a matrix Java
- Get link
- X
- Other Apps
PROGRAM TO FIND MAXIMUM SIZE SQUARE SUB-MATRIX WITH ALL 1s
public class GFG{ // method for Maximum size square sub-matrix with all 1s static void printMaxSubSquare(int M[][]) { int i,j; int R = M.length; //no of rows in M[][] int C = M[0].length; //no of columns in M[][] int S[][] = new int[R][C]; int max_of_s, max_i, max_j; /* Set first column of S[][]*/ for(i = 0; i < R; i++) S[i][0] = M[i][0]; /* Set first row of S[][]*/ for(j = 0; j < C; j++) S[0][j] = M[0][j]; /* Construct other entries of S[][]*/ for(i = 1; i < R; i++) { for(j = 1; j < C; j++) { if(M[i][j] == 1) S[i][j] = Math.min(S[i][j-1], Math.min(S[i-1][j], S[i-1][j-1])) + 1; else S[i][j] = 0; } } /* Find the maximum entry, and indexes of maximum entry in S[][] */ max_of_s = S[0][0]; max_i = 0; max_j = 0; for(i = 0; i < R; i++) { for(j = 0; j < C; j++) { if(max_of_s < S[i][j]) { max_of_s = S[i][j]; max_i = i; max_j = j; } } } System.out.println("Maximum size sub-matrix is: "); for(i = max_i; i > max_i - max_of_s; i--) { for(j = max_j; j > max_j - max_of_s; j--) { System.out.print(M[i][j] + " "); } System.out.println(); } } // Driver program public static void main(String[] args) { int M[][] = {{0, 1, 1, 0, 1}, {1, 1, 0, 1, 0}, {0, 1, 1, 1, 0}, {1, 1, 1, 1, 0}, {1, 1, 1, 1, 1}, {0, 0, 0, 0, 0}}; printMaxSubSquare(M); }}
OUTPUT:
Maximum size sub-matrix is: 1 1 1 1 1 1 1 1 1
- Get link
- X
- Other Apps
Comments
Post a Comment