Skip to content

Commit 152e441

Browse files
authored
Create number-of-paths-with-max-score.py
1 parent c30ab17 commit 152e441

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Time: O(n^2)
2+
# Space: O(n)
3+
4+
class Solution(object):
5+
def pathsWithMaxScore(self, board):
6+
"""
7+
:type board: List[str]
8+
:rtype: List[int]
9+
"""
10+
MOD = 10**9+7
11+
directions = [[1, 0], [0, 1], [1, 1]]
12+
dp = [[[0, 0] for r in xrange(len(board[0])+1)]
13+
for r in xrange(2)]
14+
dp[(len(board)-1)%2][len(board[0])-1] = [0, 1]
15+
for r in reversed(xrange(len(board))):
16+
for c in reversed(xrange(len(board[0]))):
17+
if board[r][c] in "XS":
18+
continue
19+
dp[r%2][c] = [0, 0]
20+
for dr, dc in directions:
21+
if dp[r%2][c][0] < dp[(r+dr)%2][c+dc][0]:
22+
dp[r%2][c] = dp[(r+dr)%2][c+dc][:]
23+
elif dp[r%2][c][0] == dp[(r+dr)%2][c+dc][0]:
24+
dp[r%2][c][1] = (dp[r%2][c][1]+dp[(r+dr)%2][c+dc][1]) % MOD
25+
if dp[r%2][c][1] and board[r][c] != 'E':
26+
dp[r%2][c][0] += int(board[r][c])
27+
return dp[0][0]

0 commit comments

Comments
 (0)