钢条切割4(15章:动态规划)。。。2014.5.26

来源:互联网 发布:mac上怎么解压缩 编辑:程序博客网 时间:2024/05/16 12:56
/*文件名:main.c*///自底向上动态规划求解的扩展,可以将最优解下的分割方式记录下来。#include <STDLIB.H>#include <STDIO.H>#include <MATH.H>#define N 100int r[N],s[N];void EXTENDED_BOTTOM_UP_CUT_ROD(int p[N],int n){int j,i,q;r[0]=0;for(j=1;j<=n;j++){q=-32768;for(i=1;i<=j;i++){if(q<p[i]+r[j-i]){q=p[i]+r[j-i];s[j]=i;//求解规模为j的子问题时,将最优解下的第一段钢条的最优切割长度i保存在s[j]中。}}r[j]=q;}}void PRINT_CUT_ROD_SOLUTION(int p[N],int n){EXTENDED_BOTTOM_UP_CUT_ROD(p,n);//求出最优解.while(n>0)//输出在最优解下的切割方式.{printf("%d \n",s[n]);n=n-s[n];}}int main(){int P[N];P[0]=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;PRINT_CUT_ROD_SOLUTION(P,4);}

0 0