迴圈_最大正方形
user_3763047219
c_cpp
3 years ago
1.5 kB
7
Indexable
void findMaximalSquare(int** matrix, int rows, int cols, int* maxEdge); void findMaximalSquare(int** matrix, int rows, int cols, int* maxEdge) { if (rows >= 1 && cols >= 1) { int a = matrix[rows ][cols]; int b = matrix[rows - 1][cols]; int c = matrix[rows][cols-1]; int d = matrix[rows-1][cols - 1]; if (a == b && a==c && a==d &&a!=0) { matrix[rows-1][cols-1]= matrix[rows][cols-1]+1; if (*maxEdge < matrix[rows-1][cols-1]) { *maxEdge = matrix[rows-1][cols-1]; } findMaximalSquare(matrix, rows - 1, cols-1, maxEdge); } else { findMaximalSquare(matrix, rows - 1, cols, maxEdge); findMaximalSquare(matrix, rows, cols - 1, maxEdge); } } } #include <stdio.h> #include <stdlib.h> int main() { int row, col; scanf("%d %d", &row, &col); int** matrix = (int**)malloc(row * sizeof(int*)); int i, j, tmp; for (i = 0; i < row; i++) { matrix[i] = (int*)malloc(col * sizeof(int)); } for (i = 0; i < row; i++) { for (j = 0; j < col; j++) { scanf("%d", &tmp); matrix[i][j] = tmp; } } int maxEdge = 0; findMaximalSquare(matrix, row - 1, col - 1, &maxEdge); printf("%d", maxEdge * maxEdge); for (i = 0; i < row; i++) { free(matrix[i]); } free(matrix); }
Editor is loading...