投资问题

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)

posted @ 2021-05-02 21:27  kitalekita  阅读(55)  评论(0编辑  收藏  举报