动态规划与分治算法异同:
分治算法将问题划分为互不相交的子问题,递归的求解子问题。分治算法会做出许多不必要的工作,会反复求解那些公共子问题。而动态规划对子问题只求解一次,将其存储在一个表格里面,无需每次都重新计算。
动态规划通常用来求解最优化问题,这个问题可能有许多可行解,每个解都有一个值,我们希望寻找具有最优值的解。我们称这样的解为问题的一个最优解,而不是最优解,因为可能有多个解达到最优值。
(1)根据书中思路,我们可以设计一套递归算法来求解,但此种解法效率会很低,原因是函数会反复递归调用自己,T(N)=2^N;
价格表在上图中:
#include<iostream>
using namespace std;
int CUT_ROD(int n[], int); //定义递归函数参数是价格数组和钢管长度
int main()
{
int p[11];
cout <<