# 1039. Minimum Score Triangulation of Polygon ###### tags: `Leetcode` `Medium` `Dynamic Programming` Link: https://leetcode.com/problems/minimum-score-triangulation-of-polygon/description/ ## 思路 区间型I DP 思路参考[这里](https://leetcode.com/problems/minimum-score-triangulation-of-polygon/solutions/286705/java-c-python-dp/) ```dp[i][j]``` means the minimum score to triangulate ```A[i] ~ A[j]```, while there is edge connect ```A[i]``` and ```A[j]```. We enumerate all points ```A[k]``` with ```i<k<j``` to form a triangle. The score of this triangulation is ```dp[i][j]```, ```dp[i][k]+dp[k][j]+A[i]*A[j]*A[k]``` ## Code ```java= class Solution { public int minScoreTriangulation(int[] values) { int n = values.length; int[][] dp = new int[n][n]; for(int d=2; d<=n; d++){ for(int i=0; i+d<n; i++){ int j = i+d; dp[i][j] = Integer.MAX_VALUE; for (int k=i+1; k<j; k++){ dp[i][j] = Math.min(dp[i][j], dp[i][k]+dp[k][j]+values[i]*values[k]*values[j]); } } } return dp[0][n-1]; } } ```