generated from projeto-de-algoritmos-2024/RepositorioTemplate
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDungeon_Game.py
32 lines (23 loc) · 1.16 KB
/
Dungeon_Game.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Solution(object):
def calculateMinimumHP(self, dungeon):
linha = len(dungeon)
coluna = len(dungeon[0])
#cria matrz para o resultado
nova_matriz = [[0] * coluna for _ in range(linha)]
#Calcula o valor que o cavalheiro precisa para entrar na ultima casa
nova_matriz[linha-1][coluna-1] = max(1,1 - dungeon[linha-1][coluna-1])
#calcula ultima coluna toda pois ele so anda pra direita e para baixo
for i in range(linha-2, -1,-1):
nova_matriz[i][coluna-1] = max(1, nova_matriz[i+1][coluna-1] - dungeon[i][coluna-1])
#calcula ultima linha toda pois ele so anda pra direita e para baixo
for j in range(coluna-2,-1,-1):
nova_matriz[linha-1][j] = max (1, nova_matriz[linha-1][j+1] - dungeon[linha-1][j])
for i in range(linha-2, -1,-1):
for j in range(coluna-2,-1,-1):
nova_matriz[i][j] = max(1, min(nova_matriz[i+1][j], nova_matriz[i][j+1]) - dungeon[i][j])
return nova_matriz[0][0]
dungeon = [[-2, -3, 3],
[-5, -10, 1],
[10, 30, -5]]
teste = Solution()
print(teste.calculateMinimumHP(dungeon))