问题
- 一般性描述:
设m万元,n项投资,函数fi(x)表示将x万元投入第i项项目所产生的效益,i=1,2,…,n,问:如何分配这m万元使投资总收益最大化? - 组合优化问题:
假设分配给第i个项目的投入为xi万元,问题描述为:
目标函数:max{ f1(x1) + f2(x2) + … + fn(xn) }
约束条件:x1+x2+…+xn=m,xi∈N - 实例:
解析
- 递推公式:
- 实例推导过程
前1个项目:
前2个项目:
前3个项目:
前4个项目:
设计
算法核心伪代码:
for(int i=1;i<=n;++i){
for(int j=0;j<=m;++j){
for(int k=1;k<=j;++k){
dp[i][j]=max(dp[i][j], dp[i-1][j-k]+f[i][k])
}
}
}
分析
时间复杂度:W(n, m)=O(n·m^2)