最近在复习动态规划问题,在处理挖金矿问题的时候发现网上以python实现的代码很少,于是自己整理一份。

问题描述:漫画图解

公式和讲解都在上面链接的网页里面,有一点需要说明他的图片结果是错的:

我自己手写了一份:

代码不知道对错,没有用java去写,直接上代码,注释写的自认为比较全,不会的好好理解下。

import copy
def good(n,w,g=[],p=[]):# n为金矿数,w为人数,g为金矿数组,p为人数数组arr = [0]*wfor i in range(w):if (i+1)>=p[0]:    # i为坐标, i+1为人数arr[i] = g[0]res = copy.deepcopy(arr)  #深copyprint(res)# 上面为只有一个金矿的情况for i in range(1,n):      # 金矿数for j in range(w):    # 人工数if (j+1)<p[i]:     # j为坐标, j+1为人数arr[j] = res[j]   #和上一次情况相同else:t = 0 if (j-p[i])<0 else j-p[i]    #防止负数取到后面的值arr[j] = max(res[j],res[t]+g[i])    #挖和不挖第i座金矿比较取大#res[t]+g[i] 为 挖第i座金矿的情况,res[已有人数 - 第i座所需人数]+第i座金子g[i]res = copy.deepcopy(arr)print(res)return res.pop()if __name__ == '__main__':res = good(5,10,[400,500,200,300,350],[5,5,3,4,3])print(res)

用到了深copy,不理解的去Baidu查一下,python里有拷贝,浅拷贝和深拷贝。

另外,有什么错误的地方欢迎大家指出。

动态规划挖金矿问题——python实现相关推荐

  1. dpresult在python中什么意思_动态规划(DP)的整理-Python描述

    今天整理了一下关于动态规划的内容,道理都知道,但是python来描述的方面参考较少,整理如下,希望对你有所帮助,实验代码均经过测试. 请先好好阅读如下内容--什么是动态规划? 摘录于<算法图解& ...

  2. 动态规划(DP)的整理-Python描述

    今天整理了一下关于动态规划的内容,道理都知道,但是python来描述的方面参考较少,整理如下,希望对你有所帮助,实验代码均经过测试. 请先好好阅读如下内容–什么是动态规划? 摘录于<算法图解&g ...

  3. java回调函数的生命_Java车票,车站,生命周期,龟兔赛跑,同步锁,礼让,守护线程,挖金矿【诗书画唱】...

    个人理解:加同步锁等的时候,就可以让线程"按顺序排队",一个一个地抢CPU,一个抢完对应的每次有的CPU了,另一个才抢对应的每次有的CPU,解决"并发"问题等. ...

  4. python动态规划详解_经典动态规划例题整理(Python版)

    由于本人的算法基础较为薄弱,所以在这里整理一下自己的做过的题,使自己能够随时随地回顾温习. 然后,本篇文章将会持续更新自己遇到的一些比较经典动态规划的题目,大家如果对代码有任何问题,直接在文章下面评论 ...

  5. python典型例题_经典动态规划例题整理(Python版)

    由于本人的算法基础较为薄弱,所以在这里整理一下自己的做过的题,使自己能够随时随地回顾温习. 然后,本篇文章将会持续更新自己遇到的一些比较经典动态规划的题目,大家如果对代码有任何问题,直接在文章下面评论 ...

  6. 整数划分问题 递归 动态规划 openjudge 百练 python

    4117:简单的整数划分问题 http://bailian.openjudge.cn/practice/4117 4119:复杂的整数划分问题 http://bailian.openjudge.cn/ ...

  7. 百度上线百度金矿,个人电脑也可以挖金矿

    百度金矿号称一个可以让个人电脑利用闲置网络资源赚钱的软件,这种软件近几年好几家公司都有做过尝试,迅雷,小米等互联网公司都有搞过. 这种模式有点像比特币不过之前有试过迅雷的确实不太理想,百度金矿也只是 ...

  8. 人工智能变现难?这家AI挖金矿公司已上市

    "变现"是当下阶段人工智能公司面临最重要的难题,表面看来人工智能已经在安防.医疗.教育.智能手机.汽车.金融等诸多行业纷纷落地,但这些行业实际上能产生的营收并不十分乐观.而且诸多均 ...

  9. 198. House Robber 的递归与动态规划实现方法(Python)

    目录 背景 实现方法 Step 1. 确定递归关系 Step 2. 递归方法实现 (top-down) Step 3. 递归方法 + 过程存储 实现 (top-down) Step 4. 迭代方法 + ...

  10. 【动态规划模型】金矿模型理解动态规划!(精彩的故事)

    对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划.本 ...

最新文章

  1. 还在为学习Python没有路线发愁吗?
  2. 独立云计算服务商的多维实践之道:用户需求驱动变革
  3. 通用类 RemoteUpload 远程上传从其他网站复制过来的图片
  4. MYSQL 命令【精华帖】
  5. rust(51)-rust工具,prelude
  6. python编写正则表达式匹配单词_Python正则表达式匹配整个单词
  7. 学习 AngularJs 终于有点进步了。
  8. Unity3d(UE4)动态加载osgb倾斜摄影数据
  9. Effective Modern C++ 第三章第一节,C++新特性:初始化、nullptr、alias别名、enum
  10. 如何在 Mac 上更改 Safari 背景?
  11. hdu 4828 Grids(拓展欧几里得+卡特兰数)
  12. Lucene创建索引与搜索索引试手
  13. OpenCV-Python教程(5、初级滤波内容)
  14. 常用串口监控软件:Accessport,ComMonitor,Device Monitoring Studio
  15. 爬虫学习之抓取今日头条街拍美图
  16. 如何解决DNS解析错误
  17. 解决80端口被svchost.exe进程占用的问题
  18. 详解VB对话框InputBox和MsgBox
  19. 小甲鱼Python第十九讲(函数,我的地盘听我的)
  20. MinMax极小极大算法 (The Minimax Algorithm)

热门文章

  1. Python—Django中的视图(views.py)
  2. java中求数组中最大值
  3. WindowsXP SP3 AFD.sys 本地拒绝服务漏洞的挖掘过程
  4. xp访问计算机组提示没有权限,WindowsXP系统提示没有权限使用网络怎么办
  5. 基于CNN的SEEG/EEG脑电数据处理分析
  6. Java如何处理前端传过来的Base64图片
  7. MySQL数据库之分库分表方案
  8. 计算机磁盘坏道怎么隔离,小科普 | 硬盘坏道就凉凉?把它隔离出去吧!(DLC)...
  9. 【分享】哪个OS X版本支持哪个Xcode的版本?
  10. JavaScript ES6新特性