Para efeitos da nota atribuida à resolução de exercícios ao longo do semestre - Submeter até 23:59 de 3 de Abril
(o problema continuará depois disponível para submissão, mas sem contar para a nota)
[para perceber o contexto do problema deve ler o guião da aula #02]
O Pedro e a Luísa decidiram estender o seu jogo para duas dimensões! Um deles escreve uma matriz de
números inteiros (positivos ou negativos) e o outro tem de tentar
descobrir qual a submatriz (um subretângulo contido na matriz) que dá origem à maior soma possível.
Imagina por exemplo que a Luísa escolhe a seguinte matriz:
0 | -2 | -7 | 0 |
9 | 2 | -6 | 2 |
-4 | 1 | -4 | 1 |
-1 | 8 | 0 | -2 |
Alguns exemplos de submatrizes seriam as seguintes (indicadas a vermelho):
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
soma = 15 | soma = -13 | soma = 1 | soma = -3 |
A última destas submatrizes corresponde precisamente à melhor subretângulo possível que o Pedro poderia escolher, ou seja, o que tem maior soma.
Podes ajudar os dois amigos a jogarem este jogo?
Dada uma matriz de L linhas por C colunas contendo números inteiros, a tua tarefa é calcular a maior soma que uma sua submatriz não vazia pode ter.
Na primeira linha do input vêm dois inteiros L e C, indicando respetivamente a quantidade de linhas e colunas da matriz.
Seguem-se L linhas, cada uma exactamente C números inteiros mij, indicando a matriz a considerar.
O output é constituído por uma única linha contendo a soma máxima de uma submatriz, como atrás descrito.
São garantidos os seguintes limites em todos os casos de teste que irão ser colocados ao programa:
1 ≤ L,C ≤ 300 | Dimensões de matriz | |
-2000 ≤ mij ≤ 2000 | Os números da matriz |
4 4 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2
15
O exemplo de input corresponde ao exemplo explicado no enunciado do problema.
Desenho e Análise de Algoritmos (CC2001)
DCC/FCUP - Faculdade de Ciências da Universidade do Porto