这道题有些类似矩阵连乘,就是区间的问题。设dp[i][j]表示从i到j的最小花费,那么dp[i][j]=min{dp[i]
[k]+dp[k][j]+a[j]-[i]}(i<k<j)其中a[j]-a[i]表示从i到j的长度,即要切这块木条所需的花费。求大区
间得时候小区间已经算出来了,所以符合动态规划的自底向上,而且是最优子结构,这道题我把0和木条长度加到了a
数组里面,就是说一共有n+2个点,每两个相邻的点不用切割,初始化为1
代码:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<vector>
#include<set>
#include<string>
#include<algorithm>
using namespace