1.问题
设m元钱,n项投资,函数fi(x)表示将x元投入第i项项目所产生的效益,i=1,2,…,n.问:如何分配这m元钱,使得投资的总效益最高?
假设分配给第i个项目xi元钱,即求MAX(Σ1->i fi(xi));
2.解析
Fk(x)表示x万元投给前k个项目的最大收益;
Fk(x) = MAX{(fk(xk) + Fk-1(x - xk)},k=2,3,…,n.
F1(x)=f1(x)
即求MAX(Fk(x)) k<=n
3.设计
for(k from 1 to n) 投资k个项目
for(x from 1 to m) 共分配x万元
for(xk from 1 to x) 第k个项目分配xk万元
4.分析
复杂度:O(nm^2)
5.源码
#include<stdio.h>
#include<stdlib.h>
#define total 10
int getInvest(int items[][20],int money) {
int maxRevenue = 0;
int max[20]