Minimum Cost For Tickets LeetCode solution in C++

1
class Solution {
2
public:
3
int f(int i, int j, vector<int> &days, vector<int> &costs, vector<vector<int>> &dp) {
4
if (i == days.size()) return 0;
5
if (days[i] < j) return f(i + 1, j, days, costs, dp);
6
if (dp[i][j] != -1) return dp[i][j];
7
int x = costs[0] + f(i + 1, days[i] + 1, days, costs, dp);
8
int y = costs[1] + f(i + 1, days[i] + 7, days, costs, dp);
9
int z = costs[2] + f(i + 1, days[i] + 30, days, costs, dp);
10
return dp[i][j] = min(x, min(y, z));
11
}
12
int mincostTickets(vector<int> &days, vector<int> &costs) {
13
vector<vector<int>> dp(days.size(), vector<int>(days[days.size() - 1] + 1, -1));
14
return f(0, 1, days, costs, dp);
15
}
16
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0