动态规划类似于分治法,都是把复杂问题分割化然后求和,但是分治法是子类互相不相关的进行运算,而动态规划则是涉及到其他子类之间,进行叠加的处理,比如钢管的分割问题。
private void Start()
{
int n = 5;
int[] price = { 0, 1, 5, 8, 9, 10, 17, 17, 20, 24, 30 };
UpDown(n, price);
}
//递归实现
private int UpDown(int n, int[] price)
{
if (n == 0) return 0;
int tempMaxPrice = 0;
for (int i = 1; i < n + 1; i++)
{
int maxPrice = price[i] + UpDown(n - 1, price);
if (maxPrice > tempMaxPrice)
{
tempMaxPrice = maxPrice;
}
}
return tempMaxPrice;
}