1293:买书

【题目描述】
小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元。
问小明有多少种买书方案?(每种书可购买多本)

【输入】
一个整数 n,代表总共钱数。(0≤n≤1000)
【输出】
一个整数,代表选择方案种数。
【输入样例】
20
【输出样例】
2
【提示】
样例输入
样例输入2:
15
样例输入3:
0
样例输出
样例输出2:
0
样例输出3:
0

思路:

  • 可以使用回溯搜索的方式(暴力),就是每一种书从0本到能够买的最大值都搜一下,但是算法复杂度很高。所以这里采用动态规划的方法。
  • 可以看做这是一道完全背包问题。代价就是书的价格,价值就是方案数,此处的方案数需要将这个价格j能够买书此种书的最大数K,令k=0~K,依次将a[i-1][j-k*w[i]]加起来=a[i][j]。
  • 呃,就是在考虑用j元买前i种书的时候可以分解成,( 买0本 i 种书,用j元考虑买前 i-1 种书的策略 )+(买1本 i 种书,用
    j-w[i]元考虑买前 i-1 种书的策略)+……(直到考虑到 j 元买最大数量的 i 种书)。

二维数组中一个单元格的意义在于用 j 元考虑买前 i 种书的方案数。

注意:
1、特别要注意初始化,考虑一开始,对于第一个物体(第一种书)而言,此题不再是价格大于一本书的价格,二维表格中的数a[i][j]就有值了,而是一定能够正好买到这本书,所以应该j是w[1]的倍数,才有值,也就是一种方案。此外,从第二种书开始,如果j正好能够买到这本书,这也是要算一种方案的,所以应该将a[i-1][0]值为1。
2、最值思想体现在最多的方案数,所以利用二维数组表格将所有的情况都记录下来,每个值求的时候都要选择合适的加起来。因为涉及到要叠加,所以初始化为0( j!=0 ),且压缩只有一位数组记录是不可以的,用两个一维数组或者是采用整个二维数组也行。
(3、另:因为这是一种完全背包的求方案种数的问题,所以也可以直接将f[0][0] 初始化为1,其余初始化为0(恰好)然后从头前往后遍历就行了。emmm,联系后面几篇博客的讲解之后。)

公式:

图:例如有20元

代码:

#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
//完全背包问题 变式 还是利用那个二维数组
//书的价格就是代价 书价值是方案数
int main()
{int a[5][1001];//代价最大是1000,数组记录方案总数   要记录上一行的内容 因为 设计到要从0累加 int w[5]={0,10,20,50,100};memset(a,0,sizeof(a));//先将所有初始化为0int n;//n代表总钱数 cin>>n;int k;a[1][0]=1;//如果后面有新加入的书 j正好是w[i]的倍数,可以全用后面品种买下 这也算是一种方案 a[2][0]=1;a[3][0]=1;a[4][0]=1;for(int i=1;i<=4;i++)//4种书都走一遍  一种一种往里加 一种一种考虑 {if(i==1){for(int j=n;j>=w[i];j--)//看一下包的容量j能否装下,要能正好装下 且方案为1 {if(j%w[i]==0) a[i][j]=1;}} else{for(int j=1;j<=n;j++)//j<w[i]时不用变,跟考虑到上种书a[i-1]的数值方案一样  用二维的数组记录 {if(j<w[i])//买不下这种书a[i][j]=a[i-1][j];else{k=j/w[i];//看一下包的容量j能够装下几个物体i 依次将买这种书0本~k本的总方案都加起来,就是考虑要是可以买这种书的方案数 for(int p=0;p<=k;p++){a[i][j]+=a[i-1][j-p*w[i]];}} }} //检测 /*for(int j=0;j<=n;j++)cout<<a[i][j]<<' ';cout<<endl;*/}cout<<a[4][n];return 0;}

完全背包变式 一本通 1293:买书相关推荐

  1. HDU - 6082 度度熊与邪恶大魔王(背包变式)

    度度熊与邪恶大魔王 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式,第i种攻击方式,需 ...

  2. 古有陈天华万字血书抗沙俄,今有本剧蒻万字背包虐dp(01,完全,多重,分组,混合等各种背包详解 + 板子题+ 奇奇怪怪滴变式题)

    前言: 本文介绍了01背包.完全背包.多重背包.混合背包.分组背包等背包,并对其进行透彻的剖析,并附上了板子题,供您白嫖,以及一些奇葩变式,颇有意思,供你琢磨玩弄.此外绝大部分题都有二维数组和滚动数组 ...

  3. 完全背包问题 买书(信息学奥赛一本通)

    [题目描述] 小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元. 问小明有多少种买书方案?(每种书可购买多本) [输入] 一个整数 n,代表总共钱数.(0≤n≤1000) [输 ...

  4. 买书(信息学奥数一本通-T1293)

    [题目描述] 小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元. 问小明有多少种买书方案? [输入] 第一行为n和m.一个整数 n,代表总共钱数.(0 ≤ n ≤ 1000) ...

  5. 我的书架——对一些书和如何买书的见解

    (作者doggyzone是一位淡泊名利的大好人,估计不太愿意主动把这篇帖子转到CSDN来.我就越俎代庖了.) 近日在网上看了不少帖子,感到我们的计算机图书市场还真是发生了很大的变化.CSDN刚开坛的时 ...

  6. 编程之美——买书问题:贪心算法

    1 问题描述及分析 买书折扣问题的描述是,某出版社的<哈里波特>系列共有5卷,每本单卖都是8块钱,如果读者一次购买不同的k(k>=2)卷,就可以享受不同的折扣优惠,如下所示: 问题是 ...

  7. js算法:动态规划-金矿模型与买书问题(附js源码)

    本文内容介绍转自博客:通过金矿模型介绍动态规划,后面附上我自己实现的js代码: 经典的01背包问题是这样的: 有一个包和n个物品,包的容量为m,每个物品都有各自的体积和价值,问当从这n个物品中选择多个 ...

  8. 【DP】NOI题库 6049买书 4976硬币

    1.点击前去买书 2.点去前往火星 T1:6045 买书 很水的背包问题 真是01背包-.把要买的书价格想成背包空间就行了 代码如下: #include <cstdio> #include ...

  9. 已知空间中的三点 求三角形面积_梳理中关联 变式中提升——“多边形的面积”整理与复习教学实践...

    向你介绍我是谁 大家好!我是一课研究第22组成员王冬,来自浙江省瑞安市莘塍第六小学.很高兴与您在此相遇! 本期内容有哪些 ○听一听:周卫东<数学教学,需要沉潜> ○读一读:梳理中关联,变式 ...

最新文章

  1. 用好 Spring AOP,天降大锅从容应对!
  2. 3D Slicer实现纤维追踪(大脑纤维束成像)+核磁共振影像数据处理
  3. Chevereto图片托管php源码_亲测-分享最新微信付费进群收费进群系统源码-附带搭建教...
  4. python爬虫,记录一下爬取过程,列表数据,翻页,post方式,保存字典
  5. MySQL中常见的单行函数(上)
  6. centos mysql tar 安装mysql_centos 安装 mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz 详细步骤
  7. 移植Linux3.4.2版本内核到mini2440
  8. CF1100F Ivan and Burgers
  9. 叔丁基氢醌(TBHQ)行业调研报告 - 市场现状分析与发展前景预测
  10. Ubuntu 20.04 安装 php 并配置 OpenResty
  11. IBM与红帽联手构建开源混合云环境
  12. Linux压力测试工具
  13. 基于Visual C++2010与windows SDK fo windows7开发windows7平台的tabletpc应用(2)-轨迹多文档手写轨迹输入多语言识别范例
  14. linux技术--MySQL分区
  15. 惠普笔记本重装系统按哪个键
  16. ubuntu18.04重装后的安装工作
  17. 今日研究UCosiii,研究安富莱电子的示波器程序,
  18. 网易邮箱实名操作流程
  19. 一个3D车道线检测方法PersFormer及其开源OpenLane数据集
  20. 【教程】ESP32连接华为云IoT平台

热门文章

  1. 华为c语言培训实例,案例丨华为是如何进行人才培训的
  2. 关于非华为授权机构违规开展华为培训和认证业务的警示函
  3. Verilog学习之路
  4. 【基础知识】ABtest
  5. 关于阿里云服务器屏蔽25端口
  6. 易支付网站源码+免签约接口php源码
  7. matlab进行图像降维,KLT降维与图像压缩(附MATLAB代码)
  8. 如何解决在RGui中出现的“Error in library(vioplot) : 不存在叫‘vioplot’这个名字的程辑包”问题
  9. 蓝牙歌曲信息传递方法
  10. [转载]锤子官网的 banner 的 3D 悬浮效果