试题 算法提高 贪吃的大嘴(动态规划)

问题描述

有一只特别贪吃的大嘴,她很喜欢吃一种小蛋糕,而每一个小蛋糕有一个美味度,而大嘴是很傲娇的,一定要吃美味度和刚好为m的小蛋糕,而且大嘴还特别懒,她希望通过吃数量最少的小蛋糕达到这个目的.所以她希望你能设计一个程序帮她决定要吃哪些小蛋糕.

输入格式

先输入一行包含2个整数m、n,表示大嘴需要吃美味度和为m的小蛋糕,而小蛋糕一共有n种,下面输入n行,每行2个整数,第一个表示该种小蛋糕的美味度,第二个表示蛋糕店中该种小蛋糕的总数

输出格式

输出一行包含一个整数表示大嘴最少需要吃的小蛋糕数量,若大嘴无法通过吃小蛋糕达到m的美味度和,则输出">

样例输入

10 2

4 1

2 10

样例输出

4

样例输入

10 2

4 1

7 3

样例输出

><

数据规模和约定

m ≤ 20000,小蛋糕总数量≤50.

思路:

此题一看就知道是一个多重背包题,只不过我们要求吃的小蛋糕数量。我们知道多重背包就是可以选物品n个,我们首先把01背包的程序的for循环写出来。然后在考虑多重的for如何写。

我们知道当物品i选择一次后就会选择下个物品了,那我们可以选在原来的基础上嵌入一个for用来表示当前选择了i物品的次数,由此我们dp[j]就等于dp[j-k*a[i][0]]+k和dp[j]相互比较了。dp[j]表示当前我j的美味度时最少需要吃的小蛋糕数量。我们要去他们的最小值所以我们的初始化要尽可能的大,dp[0]=0一个边界值。

程序:

m,n=map(int,input().split())

dp=[9999999999 for i in range(20005)] #初始化

a=[]

for i in range(n):

a.append(list(map(int,input().split()))) #存储物品

dp[0]=0

for i in range(n): #种类

for j in range(m,a[i][0]-1,-1): #当前美味度

for k in range(1,a[i][1]+1):# 当前的物品的次数

if k*a[i][0]>j: #防止超出背包容量

break

dp[j]=min(dp[j-k*a[i][0]]+k,dp[j])

if dp[m]==9999999999:

print(">

else:

print(dp[m])

禁止转载。仅用于自己学习。对程序错误不负责。

贪吃的大嘴用java_算法提高 贪吃的大嘴相关推荐

  1. Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴

    算法提高 贪吃的大嘴 时间限制:1.0s 内存限制:256.0MB 问题描述 有一只特别贪吃的大嘴,她很喜欢吃一种小蛋糕,而每一个小蛋糕有一个美味度,而大嘴是很傲娇的,一定要吃美味度和刚好为m的小蛋糕 ...

  2. 贪吃的大嘴java_Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴

    算法提高 贪吃的大嘴 时间限制:1.0s 内存限制:256.0MB 问题描述 有一只特别贪吃的大嘴,她很喜欢吃一种小蛋糕,而每一个小蛋糕有一个美味度,而大嘴是很傲娇的,一定要吃美味度和刚好为m的小蛋糕 ...

  3. 【蓝桥练习系统】【多重背包】 算法提高 贪吃的大嘴

    问题描述 有一只特别贪吃的大嘴,她很喜欢吃一种小蛋糕,而每一个小蛋糕有一个美味度,而大嘴是很傲娇的,一定要吃美味度和刚好为m的小蛋糕,而且大嘴还特别懒,她希望通过吃数量最少的小蛋糕达到这个目的.所以她 ...

  4. 【蓝桥杯练习】算法提高 贪吃的大嘴

    问题描述 给定N个物品,每个物品有一个重量W和一个价值V.你有一个能装M重量的背包.问怎么装使得所装价值最大.每个物品只有一个. 输入格式 输入的第一行包含两个整数n, m,分别表示物品的个数和背包能 ...

  5. 9 大主题!机器学习算法理论面试题大汇总

    机器学习是一门理论性和实战性都比较强的技术学科.在应聘机器学习相关工作岗位时,我们常常会遇到各种各样的机器学习问题和知识点. 算法理论基础不仅包含基本概念.数学基础,也包含了机器学习.深度学习相关.今 ...

  6. 【机器学习基础】9 大主题!机器学习算法理论面试题大汇总

    机器学习是一门理论性和实战性都比较强的技术学科.在应聘机器学习相关工作岗位时,我们常常会遇到各种各样的机器学习问题和知识点. 算法理论基础不仅包含基本概念.数学基础,也包含了机器学习.深度学习相关.今 ...

  7. 蓝桥杯练习系统习题-算法提高2

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法提高2 题目搜索方式:Ctrl+F--> 输入题目名称-> ...

  8. 蓝桥杯练习系统习题-算法提高1

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法提高1 题目搜索方式:Ctrl+F--> 输入题目名称-> ...

  9. 文献记录(part75)--基于最大平均熵率的大数据关联聚类算法

    学习笔记,仅供参考,有错必纠 基于最大平均熵率的大数据关联聚类算法 摘要 聚类是数据挖掘和机器学习中的基本任务之一 . 传统聚类方法由于其设计中对簇结构假设的限制 , 导致算法在不符合其假设的数据集上 ...

最新文章

  1. IM开发基础知识补课(三):快速理解服务端数据库读写分离原理及实践建议
  2. hive 运行命令后FAILED: Execution Error, return code 137 from org.apache.hadoop.hive.ql.ex ec.mr.MapredLoc
  3. 1.7编程基础之字符串
  4. python音乐下载器-支持所有主流平台-python脚本源码下载
  5. 01-09 Linux三剑客-awk
  6. c++ string类型转换为char *类型
  7. linux Operation not permitted
  8. WPF使用中知识点总结一
  9. 金融反欺诈-交易基础介绍
  10. C/C++ 找出最大素数 算法
  11. 带头结点的单链表的创建(头插法和尾插法)
  12. ONLYOFFICE Docs如何与NEXTCLOUD 24连接集成
  13. V4L2驱动详解 API翻译
  14. JVM,堆,栈,方法区之间的关系
  15. 面向单片机编程(三)- 数码管显示
  16. 高通王翔:每年收入20%投入研发
  17. CCNA实验四十 模拟ADSL与Modem拨号
  18. 计算机数据实验报告,计算机数据处理实验报告.doc
  19. 医学类计算机基础考试卷,计算机基础试题练习题库.doc
  20. 8051单片机的内核的结构及运行过程解析

热门文章

  1. 洛谷——P1151 子数整数
  2. mysql按日期查询数据_mysql按日期查询数据
  3. 【分享】终端命令工具 自动生成vue组件文件以及修改router.js
  4. Promise API 简介
  5. Unity 自定义Log系统
  6. 服务器--apache启用多个端口的方法
  7. CentOS7上使用bind9搭建DNS主从服务器
  8. 【李宏毅2020 ML/DL】P82 Generative Adversarial Network | Improving Sequence Generation by GAN
  9. 【李宏毅2020 ML/DL】P78 Generative Adversarial Network | fGAN: General Framework of GAN
  10. 【李宏毅2020 ML/DL】P73 More about Anomaly Detection