一般性描述:设m元钱,n项投资项目,函数fi(x)表示将x元投入第i项项目所产生的效益,i=1,2,···,n;
问:如何分配这m元钱,使得投资总效益最高?
组合优化问题:假设分配给第i个项目的钱数是xi,
目标函数:max{f1(x1)+ f2(x2)+···+ fn(xn)};
约束条件:x1+x2+x3+···+xn=m,xi∈n;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NCY8uopg-1623723891072)(https://z3.ax1x.com/2021/06/07/20oewn.png)]
设计:
int maxprofit(int a[M][N],int b[M][N],int reward,int number){ for(int i=1;i<=number;i++){ for(int j=0;j<money;j++){ a[i][j]=0; for(int k=0;k<=j;k++){ if(a[i][j]<b[i][j]+a[i-1][j-k]){ a[i][j]=b[i][k]+a[i-1][j-k]; } } } } return a[number][reward]; }
分析
源码:https://github.com/Ace16602/dongtaiguihua/blob/main/动态规划.cpp
02/dongtaiguihua/blob/main/动态规划.cpp