算法导论 练习题 15.1-3

来源:互联网 发布:krpano全景漫游软件 编辑:程序博客网 时间:2024/05/17 07:13
#include <stdio.h>#include <limits.h>#define C 2int p[11]={0,1,5,8,9,10,17,17,20,24,30};int r[11],s[11];int max(int a,int b){return a>=b?a:b;}void bottomUpCutRod(int n){r[0]=0;int q;for(int i=1;i<=n;i++){q=INT_MIN;for(int j=1;j<=i;j++){int profit;if(j<i)profit=p[j]+r[i-j]-C;elseprofit=p[j]+r[i-j];if(q<profit){s[i]=j;q=profit;}}r[i]=q;}}void printS(int n){while(n>0){printf("%d ",s[n]);n-=s[n];}printf("\n");}int main(){int k=5;bottomUpCutRod(k);printf("%d\n",r[k]);printS(k);getchar();}

原创粉丝点击