Easy Solution  || Dynamic Programming || Take , Not take approach
Intuition\n Describe your first thoughts on how to solve this problem. \n\n# Approach\n Describe your approach to solving the problem. \n\n# Complexity\n- Time 
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity:\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity:\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```java []\nclass Solution {\n    public int maxScore(int n, int k, int[][] stayScore, int[][] travelScore) {\n        int ans = 0;\n        Integer[][] dp = new Integer[n][k + 1];\n        \n        for (int i = 0; i < n; i++) {\n            ans = Math.max(ans, max(i, k, stayScore, travelScore, 0, n, dp));\n        }\n        return ans;\n    }\n\n    public int max(int curr, int k, int[][] ss, int[][] ts, int i, int n, Integer[][] dp) {\n        if (i >= k || k == 0) return 0;\n        \n        if (dp[curr][i] != null) {\n            return dp[curr][i];\n        }\n\n        int stay = ss[i][curr] + max(curr, k, ss, ts, i + 1, n, dp);\n        \n        int max = 0;\n        for (int dest = 0; dest < n; dest++) {\n            if (dest != curr) {\n                max = Math.max(max, ts[curr][dest] + max(dest, k, ss, ts, i + 1, n, dp));\n            }\n        }\n        \n        dp[curr][i] = Math.max(stay, max);\n        return dp[curr][i];\n    }\n}\n\n```
[]