算法分析与设计实践-作业7-动态规划投资问题

动态规划:投资问题

1.问题

设m元钱,n项投资,函数f[i][x]表示将x元投入第i项项目所产生的效益,i=1,2,…,n.问:如何分配这m元钱,使得投资的总效益最高。

2.解析

设F[k][x]表示x万元投给前k个项目的最大效益,k=1,2,…,n,x=1,2,…,m。

递推方程:F[k][x]=max{f[k][j]+F[k-1][x-j]}, 0<=j<=x , k=1,2,…,n
边界条件:F[1][x]=f[1][x] , x=0,1,…,m ; F[k][0]=0 , k=1,2,…,n

说明:第k步,共分配x万元
其中分配给第k个项目为j万元;
分配给前k-1的项目为x-j万元。

满足优化原则:
优化原则:一个最优决策序列的任何子序列本身一定是相对于子序列的初始和结束状态的最优决策序列。
已知这个序列L1时最优决策序列,那么这个序列任何子序列本身一定是相对于子序列的初始和结束状态的最优决策序列。

3.设计

For k=1,2,3,,n              //第k个项目
  For x=1,2,3,m            //k个项目共分配x万元
    For xk=0,1,2,3,,x       //第k个项目分配xk

4.分析

在这里插入图片描述

5.源码

https://github.com/lu-225/As-before/blob/master/2018212212124%20%E9%99%86%E5%AE%B6%E8%BE%89%20%E5%AE%9E%E9%AA%8C7/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E6%8A%95%E8%B5%84%E9%97%AE%E9%A2%98.cpp

猜你喜欢

转载自blog.csdn.net/qq_43633353/article/details/105499927
今日推荐