Minimum Score Triangulation of Polygon LeetCode solution in C++
1class Solution {2public:3int f(int i, int j, vector<int> &values, vector<vector<int>> &dp) {4if (i == j || i + 1 == j) return 0;5if (dp[i][j] != -1) return dp[i][j];6int res = INT_MAX;7for (int k = i + 1; k < j; k++) {8int temp = values[i] * values[j] * values[k] + f(k, j, values, dp) + f(i, k, values, dp);9res = min(res, temp);10}11return dp[i][j] = res;12}1314int minScoreTriangulation(vector<int> &values) {15int n = values.size();16vector<vector<int>> dp(n + 1, vector<int>(n + 1, -1));17return f(0, n - 1, values, dp);18}