Very Easy Question, Should Have been Easy, Using memoization
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```cpp []\nclass Solution {\npublic:\n\n    int dp[201][202];\n    int f(int city, int day, vector<vector<int>>& stayScore, vector<vector<int>>& travelScore, int &k, int &n) {\n        if(day == k) {\n            return 0;\n        }\n        if(dp[city][day] != -1) return dp[city][day];\n        int ans = 0;\n        ans = stayScore[day][city] + f(city, day+1, stayScore, travelScore, k, n);\n        for(int nextcity = 0 ; nextcity < n ; nextcity++) {\n            if(city == nextcity) continue;\n            ans = max(ans, travelScore[city][nextcity] + f(nextcity, day+1, stayScore, travelScore, k, n));\n        }\n        return dp[city][day] = ans;\n    }\n\n    int maxScore(int n, int k, vector<vector<int>>& stayScore, vector<vector<int>>& travelScore) {\n        int ans = 0;\n        memset(dp, -1, sizeof dp);\n        for(int city = 0 ; city < n ; city++) {\n            ans = max(ans, f(city, 0, stayScore, travelScore, k, n));\n        }\n        return ans;\n    }\n};\n```
[]