DP. Simple solution. 4 lines
```
class Solution:
    def maxScore(self, n: int, k: int, stayScore: List[List[int]], travelScore: List[List[int]]) -> int:
        dp = [[0]*n for _ in range(k+1)]
        for i, j in product(range(k), range(n)):
            dp[i+1][j] = max(dp[i][j] + stayScore[i][j], max(dp[i][z] + travelScore[z][j] for z in range(n)))
        return max(dp[-1])
```
['Dynamic Programming', 'Python3']