贪心算法和01背包算法
贪心算法和01背包算法
- 实验报告
- 1.问题
- 2.解析
- 3.设计
- 4.分析
- 5.源码
实验报告
课程名称 《算法分析与设计》
实验名称 贪心算法和01背包算法
1.问题
[描述算法问题,首选形式化方式(数学语言),其次才是非形式化方式(日常语言)]
给你一个空间,告诉你这个空间的最大储存空间,告诉你一系列物品且知道每件物品的价值和占用空间,每件物品只能取一遍,问这个这个存储空间存放的东西数量最大是多少。
2.解析
[问题的理解和推导,可用电子版直接在此编写,也可用纸笔推导,拍照嵌入本文档]
思路:01背包(dp)
dp[j]就表示当下表为j的时候所能装载的最大数量.
dp的状态转移方程dp[j] = max(dp[j], dp[j - w[i]] +1);(i从1~n 也就是所有的物品)
思路:贪心
想法:每次都选择最小的重量添加到其中
3.设计
[核心伪代码]
1.贪心算法
A = {1}
J = 1
For i = 2 to n doIf si > fThen A = A ∪ {i}J = i
Return A
2.01背包算法
For i = 1 to n For j = n to w[i]Dp[j] = max(dp[j], dp[j - w[i]] + 1)
4.分析
[算法复杂度推导]
一、dp的时间复杂度复杂度O(nm)
二、贪心的时间复杂度O(nlogn)
5.源码
github源码地址
贪心算法和01背包算法相关推荐
- 最长不下降子序列的O(n^2)算法和O(nlogn)算法
转帖 最长不下降子序列的O(n^2)算法和O(nlogn)算法 最长不下降子序列(LIS:Longest Increasing Subsequence) //用句通俗的话说,我讲的很通俗易懂~~ 问题 ...
- WordCount作业提交到FileInputFormat类中split切分算法和host选择算法过程源码分析
参考 FileInputFormat类中split切分算法和host选择算法介绍 以及 Hadoop2.6.0的FileInputFormat的任务切分原理分析(即如何控制FileInputForm ...
- KNN算法和Kernel KNN算法的区别
KNN算法和Kernel KNN算法的区别 KNN算法 KNN(K-Nearest Neighbor,简称KNN)算法,是一种常用的监督学习方法,其工作机制为:给定测试样本,基于某种距离度量找出训练集 ...
- 0-1背包算法python实现
0-1背包算法python实现 import numpy as np#计算状态数组 def bag(n,value,weight): '''n 背包容量value 价值数组weight 重量数组''' ...
- 背包算法轻松搞定——01背包算法、部分背包算法
这篇文章过程讲得很详细,一文搞懂(点击看原文) 不懂之前觉得很难理解,觉得很复杂,其实没有必要.因为只要懂动态规划就可以很轻松搞定0-1背包算法(部分背包算法更简单,排序即可).之前看了很多篇文章都觉 ...
- 0-1背包算法和完全背包算法MATLAB代码实现
有10件物品,它们的重量分别是5,8,3,2,6,6,5,4,7,5,,它们的价值分别是2,4,7,7,3,6,3,5,4,6,现在给你个承重为30的背包,试用0-1背包.完全背包算法,分别计算如何让 ...
- 并行sgd算法和min-batch gd算法
sgd算法全称随机梯度下降法,有着比批梯度下降法更快收敛的优势,该算法名称中的"随机"二字是改算法的中心精神所在. sgd算法是一种天生的串行的算法,当数据量大的时候们希望通过使用 ...
- LBG算法、Lloyd算法和K均值算法
---------------------------------LBG算法.Lloyd算法和K-Means算法--------------------------------- LBG算法是一种矢量 ...
- 动态规划01背包算法详解
动态规划算法核心思想: 将大的问题转化为小问题进行解决. 01背包问题: 01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的重量为W1,W2至Wn,与之相对应的价值为V1V2至Vn.01背 ...
最新文章
- 易经——第二卦 坤 坤为地 坤上坤下
- Git错误:fatal: Not a git repository (or any of the parent directories)解决方法
- 多线程学习笔记一之内置锁
- 数据泄漏防御在企业的应用
- YBTOJ:彩球抽取(期望)
- 信息学奥赛一本通C++语言——1016: 整型数据类型存储空间大小
- linux shell 逻辑运算符、逻辑表达式
- 对CSRF(跨站请求伪造)的理解
- 爱奇艺NLP:BiLSTM_CRF的关键词自动抽取
- JS性能优化 之 FOR循环
- 硬盘分区怎么不删除文件合并_硬盘分区怎么合并?
- 校园火灾项目Focuse-1
- tdr上升时间什么设定_TDR的完整形式是什么?
- C语言实现:输出明天的日期
- 开发一个类似美团的外卖小程序多少钱
- MarkdownPad 2使用教程
- 春招必看一位老学长的真实互联网校招求职心路历程~
- JS键盘事件—onkeydown,onkeyup
- c语言定义用户标识符32个,c语言用户标识符是什么
- Cocos2d-x简单横版游戏