(说明:由于CSDN的博客中不能添加下标等特殊符号,所以部分内容使用截图的形式)
通过对问题进行高度抽象,现在我们的问题,就是要递归地求解r
n 的最大值,下面采用的是一种自顶向下的递归方法:
int p[] = {1, 5, 8, 9, 10, 17, 17,
20, 24, 30};
static inline int max(i, j)
{
return (i > j ? i : j);
}
int cut_mod(int *p, int n)
{
int i;
int q;
if (n == 0) {
return 0;
}
q = -1;
for (i = 0; i < n; ++i) {
q = max(q, p[i] + cut_mod(p, n - i - 1));
}
return q;
}
int bottom_up_cut_mod(int *p, int n)
{
int i, j, q