Dynamic programming
来源:互联网 发布:网站的优化 编辑:程序博客网 时间:2024/06/05 05:11
# coding: utf-8# In[2]:# 动态规划 0/1背包问题# 参考http://www.hawstein.com/posts/dp-knapsack.htmlimport numpy as np# In[3]:# 一共五个宝石,袋子一共可以放10磅宝石n=5c=10# v代表宝石的重量,w代表宝石的价值v={0:2,1:2,2:6,3:5,4:4}w={0:6,1:3,2:5,3:4,4:6}# d[i][j]表示在j磅的容量下放i个宝石产生的最大价值# d=getMatrix(100,100)d=np.zeros([n+1,c+1])# In[4]:get_ipython().magic('pdb on')# In[19]:for i in range(n+1): for j in range(c+1): if i!=0: d[i][j]=d[i-1][j] # 如果第i-1个宝石没有放进去,那么就是求在j磅的袋里i-1宝石最大的价值 if (i>0): if (j>=v[i-1]): if d[i][j]<(d[i-1][j-v[i-1]]+w[i-1]): d[i][j]=d[i-1][j-v[i-1]]+w[i-1]print('最大能获得的宝石价值为:',d[n][c])# In[20]:label=np.zeros([n])# 查看哪些宝石被装进了袋子for i in range(n,0,-1): if i-1>=0: if d[i][j]>d[i-1][j]: label[i-1]=1 j=j-v[i-1] #//装入第i-1个宝石后背包能装入的体积就只剩下j - V[i-1]print(label) # In[ ]:print(1!=1)
Reference: http://www.hawstein.com/posts/dp-knapsack.html
阅读全文
0 0
- dynamic programming
- Dynamic Programming
- Dynamic Programming
- dynamic programming
- Dynamic Programming
- dynamic programming
- Dynamic Programming
- Dynamic Programming
- Dynamic Programming
- Dynamic Programming
- Dynamic programming
- Dynamic Programming
- Dynamic Programming
- Dynamic Programming
- dynamic programming
- Dynamic Programming?
- Dynamic Programming
- Dynamic Programming
- nginx 在windows中的安装和配置
- 单例模式 代码
- 从零开始学java(五)运算符
- nodejs-express+app.use的用法
- 内部类
- Dynamic programming
- Python数据类型 序列-列表
- 40个Java多线程问题总结
- web前端三大技术介绍之CSS
- Android Studio集成SVN报错
- D3.js实现节点折叠+闪烁+叶节点形状改变的demo
- Python 爬虫学习笔记
- C#实现对外部程序的调用操作
- 栈之C++封装