多边形三角剖分的最低得分【LC1039】
你有一个凸的
n边形,其每个顶点都有一个整数值。给定一个整数数组values,其中values[i]是第i个顶点的值(即 顺时针顺序 )。假设将多边形 剖分 为
n - 2个三角形。对于每个三角形,该三角形的值是顶点标记的乘积,三角剖分的分数是进行三角剖分后所有n - 2个三角形的值之和。返回 多边形进行三角剖分后可以得到的最低分 。
感觉dp要好好练习,稍微难点就写不出来,=(
递归
-
思路:
我们在一个多边形中选择第一条边,然后选择其他任意一个顶点,与该边的两个顶点相连,那么我们得到了一个三角形和两个小多边形,那么该多边形进行三角剖分后的最低分为这三个图形进行剖分后的最低分之和,因此我们可以使用递归/dp解决该题
因此可以定义递归函数dfs(i,j)dfs(i,j)dfs(i,j)表示从iii到jjj的多边形的最低得分
-
递归过程:枚举三角形的第三个顶点kkk,计算iii到kkk的最低得分和kkk到jjj的最低得分
dfs(i,j)=mink=i+1j−1dfs(i,k)+dfs(k,j)+v[i]∗v[j]∗v[k] dfs(i,j)=min_{k=i+1}^{j-1}{dfs(i,k)+dfs(k,j)+v[i]*v[j]*v[k]} dfs(i,j)=mink=i+1j−1dfs(i,k)+dfs(k,j)+v[i]∗v[j]∗v[k] -
递归边界
dfs(i,i+1)=0dfs(i,i+1)=0dfs(i,
-

文章介绍了如何解决一个关于多边形三角剖分的问题,目标是最小化由顶点值计算出来的三角形得分之和。提供了两种解决方案,一种是递归方法,另一种是动态规划方法,两者的时间复杂度均为O(n^3),空间复杂度为O(n^2)。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



