Minimum Cost to Cut a Stick LeetCode solution in C++
1class Solution {2public:3long cutMin(int i, int j, vector<int> &c, vector<vector<int>> &dp) {4if (i > j) return 0;5if (dp[i][j] != -1) return dp[i][j];6long mini = INT_MAX;7for (int ind = i; ind <= j; ind++) {8long cost = c[j + 1] - c[i - 1] + cutMin(i, ind - 1, c, dp) + cutMin(ind + 1, j, c, dp);9mini = min(mini, cost);10}11return dp[i][j] = mini;12}13int minCost(int n, vector<int> &cuts) {14int c = cuts.size();15cuts.push_back(0);16cuts.push_back(n);17sort(cuts.begin(), cuts.end());18vector<vector<int>> dp(c + 1, vector<int>(c + 1, -1));19return cutMin(1, c, cuts, dp);20}21};