1
class Solution:
2
def removeBoxes(self, B):
3

4
@lru_cache(None)
5
def dp(i, j, k):
6
if i > j:
7
return 0
8
indx = [m for m in range(i + 1, j + 1) if B[m] == B[i]]
9
ans = (k + 1) ** 2 + dp(i + 1, j, 0)
10
return max([ans] + [dp(i + 1, m - 1, 0) + dp(m, j, k + 1) for m in indx])
11

12
return dp(0, len(B) - 1, 0)

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0