投资问题

1.问题

投资问题(一般性描述):
设m万元钱,n项投资,函数fi(x)表示将x万元投入第i项项目所产生的效益,i = 1,2,…,n.
问:如何分配这m万元钱,使得投资的总效益最高?

组合优化问题:
假设分配给第i个项目的钱数是xi,问题描述为:
在这里插入图片描述
表1 投资与效益表

2.解析

投资问题的实现思路:
设Fk(x)表示x万元投给前k个项目的最大效益,k = 1,2,…,n,x = 1,2,…,m

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

投资问题的实现步骤(基于表1):
1、k=1,即只有一个项目
在这里插入图片描述
2、k=2,即有两个项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、k=3,即有三个项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4、k=4,即有四个项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
综上,整理成表格如下所示
在这里插入图片描述

3.设计

投资问题的伪代码:

xi(x) = k: 新加第 i 项时,总共分配 x 元时,第 i 项分配了 k 元(xk)
建立f表(已知),建立x表,建立F表;
递推方程: Fk(x) = max{f k(xk )+Fk-1 (x -xk )}, k =1,2,3,...,n

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

4.分析

投资问题的时间复杂度:
在这里插入图片描述

5.源码

投资问题的源码地址:
https://github.com/Ying917/Algorithm-Analysis/blob/master/invest.cpp

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值