贪心算法和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背包算法相关推荐

  1. 最长不下降子序列的O(n^2)算法和O(nlogn)算法

    转帖 最长不下降子序列的O(n^2)算法和O(nlogn)算法 最长不下降子序列(LIS:Longest Increasing Subsequence) //用句通俗的话说,我讲的很通俗易懂~~ 问题 ...

  2. WordCount作业提交到FileInputFormat类中split切分算法和host选择算法过程源码分析

    参考 FileInputFormat类中split切分算法和host选择算法介绍  以及 Hadoop2.6.0的FileInputFormat的任务切分原理分析(即如何控制FileInputForm ...

  3. KNN算法和Kernel KNN算法的区别

    KNN算法和Kernel KNN算法的区别 KNN算法 KNN(K-Nearest Neighbor,简称KNN)算法,是一种常用的监督学习方法,其工作机制为:给定测试样本,基于某种距离度量找出训练集 ...

  4. 0-1背包算法python实现

    0-1背包算法python实现 import numpy as np#计算状态数组 def bag(n,value,weight): '''n 背包容量value 价值数组weight 重量数组''' ...

  5. 背包算法轻松搞定——01背包算法、部分背包算法

    这篇文章过程讲得很详细,一文搞懂(点击看原文) 不懂之前觉得很难理解,觉得很复杂,其实没有必要.因为只要懂动态规划就可以很轻松搞定0-1背包算法(部分背包算法更简单,排序即可).之前看了很多篇文章都觉 ...

  6. 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背包.完全背包算法,分别计算如何让 ...

  7. 并行sgd算法和min-batch gd算法

    sgd算法全称随机梯度下降法,有着比批梯度下降法更快收敛的优势,该算法名称中的"随机"二字是改算法的中心精神所在. sgd算法是一种天生的串行的算法,当数据量大的时候们希望通过使用 ...

  8. LBG算法、Lloyd算法和K均值算法

    ---------------------------------LBG算法.Lloyd算法和K-Means算法--------------------------------- LBG算法是一种矢量 ...

  9. 动态规划01背包算法详解

    动态规划算法核心思想: 将大的问题转化为小问题进行解决. 01背包问题: 01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的重量为W1,W2至Wn,与之相对应的价值为V1V2至Vn.01背 ...

最新文章

  1. 易经——第二卦 坤 坤为地 坤上坤下
  2. Git错误:fatal: Not a git repository (or any of the parent directories)解决方法
  3. 多线程学习笔记一之内置锁
  4. 数据泄漏防御在企业的应用
  5. YBTOJ:彩球抽取(期望)
  6. 信息学奥赛一本通C++语言——1016: 整型数据类型存储空间大小
  7. linux shell 逻辑运算符、逻辑表达式
  8. 对CSRF(跨站请求伪造)的理解
  9. 爱奇艺NLP:BiLSTM_CRF的关键词自动抽取
  10. JS性能优化 之 FOR循环
  11. 硬盘分区怎么不删除文件合并_硬盘分区怎么合并?
  12. 校园火灾项目Focuse-1
  13. tdr上升时间什么设定_TDR的完整形式是什么?
  14. C语言实现:输出明天的日期
  15. 开发一个类似美团的外卖小程序多少钱
  16. MarkdownPad 2使用教程
  17. 春招必看一位老学长的真实互联网校招求职心路历程~
  18. JS键盘事件—onkeydown,onkeyup
  19. c语言定义用户标识符32个,c语言用户标识符是什么
  20. Cocos2d-x简单横版游戏

热门文章

  1. ISTQB AL-TA/TTA连载系列01:软件测试设计面临的挑战
  2. Nginx 配置数据库服务代理
  3. Android重力感应SensorEventListener详解
  4. 快速可视化的配置系统集成
  5. 电信无线路由猫的配置
  6. C# Snowflake
  7. 物联网工程实训第三天
  8. 【智能车辆工程】专业课笔记:汽车理论
  9. 苹果6s照相快门声音设置_原来苹果手机自带扫描仪,学会这2个方法,纸质档一键电子化...
  10. 7 For All Mankind推出N°21 x 7 For All Mankind 胶囊系列