Python 算法设计与分析 投资问题

投资问题

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

实例:5万元钱,4个项目

x f1(X) f2(X) f3(X) f4(X)
0 0 0 0 0
1 11 0 2 20
2 12 5 10 21
3 13 10 30 22
4 14 15 32 23
5 15 20 40 24

需要生成一个二维数组F,F[i] [j]表示前i个项目投资j元钱的最大效益,使用动态规划,要将此问题划分为子问题,从一个项目,第二个项目,…,直到第u个项目时,为u分配x元钱,n-x元钱的最大效益为F[]

子问题界定:由参数k和x界定

​ K:考虑对项目1,2,…,k的投资 x: 投资总钱数不超过x

当K =1 时

 F1(1) = 11,  F1(2) = 12,  F1(3) = 13 ,  F1(4) = 14,  F1(5) = 15

当K =2 时

(0,1) (1,0) F2(1) = max {f2(1), f1(1)} = 11

​ (0,2) (1,1) (2,0) F2(2) = max{f2(2), F1(1)+f2(1), F1(2)} =12

​(0,3) (1,2) (2,1) (3,0) F2(3) = max{f2(3),F1(1)+f2(2), F1(2)+f2(1), F1(3)} = 16

类似的 F2(4) = 21

F2(5) = 26

代码实现

import numpy as npm = 5  # 投资总额
n = 6
k = 4  # 项目数
# m元钱,n项投资 k个项目
dp = np.zeros((m, n))  # dp[i][j]  从1-i号项目中选择,投资j万元,所取得的最大收益
mark = np.zeros((m, n))  # 从1-i号项目中选择,投资j万元,获得最大收益时,在第i号项目中投资了多少钱
f = np.array([[0, 0, 0, 0, 0, 0],[0, 11, 12, 13, 14, 15],[0, 0, 5, 10, 15, 20],[0, 2, 10, 30, 32, 40],[0, 20, 21, 22, 23, 24]])# 初始化第一行
for j in range(m + 1):dp[1][j] = f[1][j]mark[1][j] = j
for i in range(1, k + 1):for j in range(1, m + 1):for k in range(j):if dp[i][j] < f[i][k] + dp[i - 1][j - k]:dp[i][j] = f[i][k] + dp[i - 1][j - k]  # 更新当前最优解mark[i][j] = k  # 更新标记函数print("最大收益", dp[4][5])for i in range(1, k + 1):for j in range(m + 1):print("(%d, %d)" % (dp[i][j], mark[i][j]), end="\t")print("\n")for i in range(k, 0, -1):print(f"第{i}个项目投资{mark[i][m]}元")m = m - int(mark[i][m])

运行结果:

算法复杂度

Python 算法设计与分析 投资问题相关推荐

  1. python 算法设计与分析_算法设计与分析(黄建军)

    spContent=本课基于主讲教师在北京大学讲授数据结构与算法课(Python版)的多年教学实践经验,面向具有Python语言程序设计基础的大学生和社会公众,介绍常见的基本数据结构以及相关经典算法, ...

  2. 算法设计与分析(python版)-作业一

    参考教材:算法设计与分析(Python版)         作者:王秋芬 1 . 容易 (4分)2 n=O(100n ^2) 错误 2 . 容易 (3分)10=θ(log10) 正确 3 . 容易 ( ...

  3. 算法设计与分析(python版)-作业三

    参考教材:算法设计与分析(Python版)         作者:王秋芬 1 . 普通 (5分)以下问题中,哪些问题的分治算法消耗的时间与输入序列无关.() A. 二分查找 B. 合并排序 C. 快速 ...

  4. 太原理工大学linux与python编程r实验报告_太原理工大学算法设计与分析实验报告...

    <太原理工大学算法设计与分析实验报告>由会员分享,可在线阅读,更多相关<太原理工大学算法设计与分析实验报告(12页珍藏版)>请在人人文库网上搜索. 1.本科实验报告课程名称: ...

  5. 线性时间选择 python实现 计算机算法设计与分析

    最近算法老师布置了很多作业啊,其中一项就是要求实现书上<计算机算法设计与分析>28页的算法,实现过程如下:

  6. 哈工大威海算法设计与分析_计算机算法设计与分析第一章 算法概述

    晓强Deep Learning的读书分享会,先从这里开始,从大学开始.大家好,我是晓强,计算机科学与技术专业研究生在读.我会不定时的更新我的文章,内容可能包括深度学习入门知识,具体包括CV,NLP方向 ...

  7. 【算法设计与分析】06 几类重要的函数

    本篇文章中会用到上一篇文章的定理:[算法设计与分析]05 有关函数的渐进的界的定理 主要学习常见的一些函数的阶 1. 基本函数类 以下按阶的高低排序: 至少指数级: 2n, 3n, n!, - 多项式 ...

  8. 程振波 算法设计与分析_算法设计与分析

    本书按照教育部*制定的计算机科学与技术专业规范的教学大纲编写,努力与国际计算机学科的教学要求接轨.强调 算法 与 数据结构 之间密不可分的联系,因而强调融数据类型与定义在该类型上的运算于一体的抽象数据 ...

  9. 算法设计与分析复习笔记(上)

    简介:本文是博主在复习算法设计与分析的笔记,参考了北大算法设计与分析以及王晓东编著的<计算机算法设计与分析>第四版相关内容,如有错误,欢迎指正. 文章目录 设计技术 分治 动态规划 设计技 ...

最新文章

  1. Retrofit的动态代理
  2. 长春成人计算机学校有哪些专业学校,长春成人高考学校有哪些
  3. JVM 调优系列之监控工具
  4. python以垂直方式输出hello world_python3提问:垂直输出Hello World,全部代码不超过2行....
  5. web前端 到底怎么学?掌握什么可以拿到高薪?
  6. vue的实例属性$options
  7. 生成一定数量的不重复随机数
  8. PyTorch学习—2.张量的创建与张量的操作
  9. 移动光猫固件备份、刷机、改sn和mac等
  10. 如何写工作说明书(sow)
  11. 产品经理的职业规划及绩效评估
  12. wait和notify,sleep
  13. 和刘备相关的人(九 )
  14. forEach,$.each()以及$().each()的比较
  15. 如何根据文献末尾的参考文献找到被引用的文献
  16. char *str1 和 char str2[]的详解
  17. 华为 1+X《网络系统建设与运维(中级)》认 证实验模拟上机试题
  18. 编程练习 P124 6.2 java国际标准书号ISBN是由13位数字组成,分为5段,如978-7-111-50690-4是一个合法的书号。编写程序,用户输入一个字符串书号,检查该书号是否合法。
  19. Android开发黑白灰模式和夜间模式设置
  20. 盘点一个批量提取pdf文件目标信息的实用案例

热门文章

  1. 奢侈品典当价格以及流程又是如何的?现今哪些品牌的奢侈品押呗可以典当!
  2. google v8 实战 -- 构建v8
  3. 随笔记录——numpy4(伪随机数生成)
  4. 计算机专业试讲10分钟教案,10分钟试讲教案模板.doc
  5. sendgrid html text,当我保存时,SendGrid通过更改我的html模板“帮助”我?
  6. Mysql进阶优化篇02——索引失效的10种情况及原理
  7. 移动端VIN码识别应用范围
  8. 红米4android版本怎么升级,红米4MIUI稳定版安卓9.0刷机包(完整固件升级包MIUI11 稳定版)...
  9. 蓝牙BQB认证RF射频测试
  10. 堪称神器的Chrome插件