2
def getMaxGridHappiness(3
self, m: int, n: int, introvertsCount: int, extrovertsCount: int7
def fn(prev, i, j, intro, extro):8
"""Return max grid happiness at (i, j)."""10
return 0 # no more position12
return fn(prev, i + 1, 0, intro, extro)13
if intro == extro == 0:16
prev0 = prev[:j] + (0,) + prev[j + 1 :]17
ans = fn(prev0, i, j + 1, intro, extro)20
if i and prev[j]: # neighbor from above26
if j and prev[j - 1]: # neighbor from left32
prev0 = prev[:j] + (1,) + prev[j + 1 :]33
ans = max(ans, val + fn(prev0, i, j + 1, intro - 1, extro))48
prev0 = prev[:j] + (2,) + prev[j + 1 :]49
ans = max(ans, val + fn(prev0, i, j + 1, intro, extro - 1))52
return fn((0,) * n, 0, 0, introvertsCount, extrovertsCount)