Funcion submatrix máxima
Aquí tienes una función en Python que encuentra la submatriz cuadrada de tamaño máximo con la suma de elementos máxima en una matriz dada:
```python
def submatrix_max(matrix):
rows = len(matrix)
cols = len(matrix[0])
max_sum = 0
top = 0
left = 0
bottom = 0
right = 0
for i in range(rows):
temp = [0] * cols
for j in range(i, rows):
for k in range(cols):
temp[k] += matrix[j][k]
current_sum = 0
start_col = 0
for end_col in range(cols):
current_sum += temp[end_col]
if current_sum > max_sum:
max_sum = current_sum
top = i
left = start_col
bottom = j
right = end_col
if current_sum < 0:
current_sum = 0
start_col = end_col + 1
return max_sum, top, left, bottom, right
# Ejemplo de uso
matrix = [
[1, 2, -1, -4, -20],
[-8, -3, 4, 2, 1],
[3, 8, 10, 1, 3],
[-4, -1, 1, 7, -6]
]
max_sum, top, left, bottom, right = submatrix_max(matrix)
print("La submatriz cuadrada de suma máxima es:")
for i in range(top, bottom+1):
for j in range(left, right+1):
print(matrix[i][j], end=" ")
print()
print("La suma máxima es:", max_sum)
```
Esta función recibe una matriz como entrada y devuelve la suma máxima de una submatriz cuadrada dentro de la matriz, junto con las coordenadas de la esquina superior izquierda y la esquina inferior derecha de la submatriz. Puedes probarla con diferentes matrices para ver cómo funciona.