投资问题
1. 问题
设m万元钱,n项投资,函数fi(x)表示将x万元投入第i项项目所产生的效益,i=1,2,…,n.问:如何分配这m元钱,使得投资的总效益最高?
2. 解析
假设分配给第i个项目的钱数是xi,问题描述为:
目标函数:max{f1(x1)+f2(x2)+…+fn(xn)}
约束条件 x1+x2+…+xn=m,xi属于N
其是最优决策序列,满足优化原则,使用动态规划,可以解决这个问题。
3. 设计
for (int i=1;i<=number;i++)
{
for (int j=0;j<=money;j++)
{
dp[i][j]=0;
for (int k=0;k<=j;k++)
{
if (dp[i][j]<f[i][k]+dp[i-1][j-k])
dp[i][j]=f[i][k]+dp[i-1][j-k];
}
}
}
return dp[number][money];
4. 分析
5. 源码
kitalekita/投资问题.cpp at main · kitalekita/kitalekita (github.com)