钢条切割2(15章:动态规划)。。。2014.5.26
2014-05-26 10:44
218 查看
#include <STDLIB.H> #include <STDIO.H> #define N 100 //加入备忘机制的自顶向下法。 int maxim(int a,int b)//求最大值 { if(a>=b) return a; else return b; } int MEMOIZED_CUT_ROD_AUX(int p ,int n,int r )//在自顶向下的递归实现的方法下加入了备忘的机制。 { int q,i; if(r >=0) return r ;//若是n已经算出了最大收益,则不会再继续分割下去了,直接返回n的收益值。 if(n==0) q=0; else for(i=1;i<=n;i++)//若备忘机制处n所对应的r <0则说明n的值没有算出了来。继续调用函数分割计算。 q=maxim(q,p[i]+MEMOIZED_CUT_ROD_AUX(p,n-i,r)); r =q; return r ; } int MEMOIZED_CUT_ROD(int p ,int n) { int i,r ; for(i=0;i<=n;i++)//将辅助数组r 全部初始化为最小。 r[i]=-32768; return MEMOIZED_CUT_ROD_AUX(p,n,r); } int main() { int P ,i,x; for(i=0;i<N;i++) P[i]=0; P[1]=1; P[2]=5; P[3]=8; P[4]=9; P[5]=10; P[6]=17; P[7]=17; P[8]=20; P[9]=24; P[10]=30; x=MEMOIZED_CUT_ROD(P,4); printf("%d \n",x); return 0; }
相关文章推荐
- 钢条切割3(15章:动态规划)。。。2014.5.26
- 钢条切割4(15章:动态规划)。。。2014.5.26
- 算法导论15章 动态规划 之 钢条切割
- 钢条切割1(15章:动态规划)。。。2014.5.21
- 第十五章 动态规划——钢条切割
- c++使用动态规划dp(自底向上)重构解决钢条切割输出最大收益和切割方案及运行实例结果
- 动态规划 钢条切割问题的朴素解法
- 切割钢条【动态规划】
- c++使用动态规划dp(自底向上)重构解决钢条切割输出最大收益和切割方案及运行实例结果
- 《算法导论》学习笔记——钢条切割,斐波那契数列(动态规划)
- 算法导论-动态规划-钢条切割
- 动态规划 -- 钢条切割
- c++使用动态规划dp(自底向上)重构解决钢条切割输出最大收益和切割方案及运行实例结果
- [算法]动态规划-钢条切割
- 算法导论笔记 动态规划 -- 钢条切割问题 思路
- 动态规划-钢条切割
- 动态规划-钢条切割问题
- 算法实践篇-钢条切割问题-动态规划
- (动态规划) 算法导论_钢条切割问题.(补)
- c++使用动态规划dp(自底向上)重构解决钢条切割输出最大收益和切割方案及运行实例结果