买书最优

一、题目要求

  书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:

本数                  折扣

2                       5%

3                       10%

4                       20%

5                       25%

  要求:

  • 根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
  • 设计算法能够计算出读者购买一批书的最低价格。
  • 要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。(截止日期2015-4-15晚18:00)

二、设计思路

  买书价格最优时,十本以上具有普遍性,所以只需要考虑十本以内买书的价格最优就可以了,其中买一本是没有优惠的,所以每次买的书可以分批次进行,这样才可以每次最优
十本以内具有代表性,这里不再进行算法的实现,直接通过相应的数量对应不同的价格来进行计算。

三、源代码

 1 // book.cpp : 定义控制台应用程序的入口点。
 2 //
 3
 4 #include "stdafx.h"
 5 #include"iostream"
 6 using namespace std;
 7
 8 int main()
 9 {
10     int num;                //购买书的数量
11     double sum1,sum2;        //原始价格sum1,总优惠价格sum2
12     double price;            //优惠价格
13     int no1,no2;            //确定买书所分得批次(每批五本)no1和不足十本的部分no2
14     int a,b;
15     cout<<"请输入你要购买的本数:";
16     cin>>num;
17     sum1=8*num;
18     no1=num/5;
19     no2=num%5;
20     if(no1%2!=0)
21     {
22         no1=no1-1;
23         no2=no2+5;
24     }
25     switch(no2)
26     {
27     case 0:
28         price=0;
29         a=0;b=0;
30         break;
31     case 1:
32         price=0;
33         a=1;b=0;
34         break;
35     case 2:
36         price=0.8;
37         a=2;b=0;
38         break;
39     case 3:
40         price=2.4;
41         a=2;b=0;
42         break;
43     case 4:
44         price=6.4;
45         a=4;b=0;
46         break;
47     case 5:
48         price=10;
49         a=5;b=0;
50         break;
51     case 6:
52         price=10;
53         a=1;b=5;
54         break;
55     case 7:
56         price=10.8;
57         a=2;b=5;
58         break;
59     case 8:
60         price=12.8;
61         a=b=4;
62         break;
63     case 9:
64         price=16.4;
65         a=4;b=5;
66         break;
67     }
68     sum2=10*no1+price;
69     cout<<"最优价格为:"<<sum1-sum2<<endl;
70     cout<<"购买方案为:第一次购买"<<no1<<"批(每批一整套);"<<"第二次购买"<<a<<"本;"<<"第三次购买"<<b<<"本;"<<endl;
71     return 0;
72 }

四、实验结果

五、实验分析

  这次的题目并不是多么有难度,我觉得这次最主要的是体现自己思考问题的方式,怎样才能找到一个更好的解决方法,同一个问题可能有许多种不同的思路,但是我们要确定选择哪种思路,使用哪种解题方法,这才是重要的。实现过程中的问题可以通过学习去客服,但是方法上的问题确实自己思路的体现,找到最优解是一个积累的过程,是要不断的摸索的,并不是只针对某个题,只有摸索的多了,才能够正确的对问题进行规划和分类,这对于团队项目中问题的划分也是有帮助的

时间: 2024-08-14 04:14:57

买书最优的相关文章

4月14号周二课堂练习:买书最优问题

一.问题提出 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示: 本数                   折扣 2                       5% 3                       10% 4                       20% 5                       25% 二.题目要求 1.根据购买的卷数以及本数,会对应不同折扣规则情况.单数一本书只会对应一个折扣

软件工程——买书折扣问题

1.题目 书店针对<哈利波特>系列书籍进行促销活动一共5卷,用编号0.1.2.3.4表示,单独一卷售价八元,具体折扣如下所示: 本书       折扣 2           5% 3          10% 4          15% 5          20% 根据购买的卷数以及本数,会对应不同折扣规则情况.单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠.设计算法能够计算出读者购买一批书的最低价格. 2.设计思路 根据题目

OpenJudge百炼习题解答(C++)--题4040:买书问题

题: 总时间限制:  1000ms  内存限制:  65536kB 描述 某网上书店举行优惠促销,现有两种优惠策略.策略一是购书总额大于100元的可享受免费送货.策略二是如果购书数量大于3本,则购书总额享受95折优惠(不包括运费).两种优惠策略不能同时享受,最多可选择其中一种优惠策略.运费为20元.小明想在这个网站上买书,请帮他选择最优的优惠策略. 输入 有多行,第一行是买书的种类N(0 <= N <= 100),接下来的N行每行输入一种书目的购买数量M和代价P(P不一定是整数).当N为-1时

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

本文内容介绍转自博客:通过金矿模型介绍动态规划,后面附上我自己实现的js代码: 经典的01背包问题是这样的: 有一个包和n个物品,包的容量为m,每个物品都有各自的体积和价值,问当从这n个物品中选择多个物品放在包里而物品体积总数不超过包的容量m时,能够得到的最大价值是多少?[对于每个物品不可以取多次,最多只能取一次,之所以叫做01背包,0表示不取,1表示取] 为了用一种生动又更形象的方式来讲解此题,我把此题用另一种方式来描述,如下: 有一个国家,所有的国民都非常老实憨厚,某天他们在自己的国家发现了

编程之美之买书问题

拿到这个问题,我的第一反应是用贪心算法,优先满足不同种类多的,这样打的折扣比价多.但是,看了书中的分析发现,* 我们设定的贪心策略实际上是有问题的, ie 在买 5 + 3 本的时候会出错. 看到这里,书上说可以利用改进的贪心算法,感觉如果换了相应的折扣数量,可能又会有不同的结果了.因而,没有深入的研究下去. 既然,贪心算法不可行,那就用动态规划呗. 这里的动态规划思路很简单不过写起来有些复杂.我们这里用到了5维数组, 光是init 就写了好多. 其实我在写的时候,就在想有什么简单一点的方法可以

(动态规划)6049:买书

描述 小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元. 问小明有多少种买书方案?(每种书可购买多本) 输入 一个整数 n,代表总共钱数.(0 <= n <= 1000) 输出 一个整数,代表选择方案种类 样例输入 样例输入1:20 样例输入2:15 样例输入3:0 样例输出 样例输出1:2 样例输出2:0 样例输出3:0 我の代码 #include <iostream> int pri[5]; int dp[1001]; using namespace s

课堂练习-买书价格最低

实验背景 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示: 本数 折扣 2 5%         3 10%         4 20%            5 25% 根据购买的卷数以及本数,会对应不同折扣规则情况.单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠.       设计算法能够计算出读者购买一批书的最低价格. 一.设计思想此问题可以折算为如何取余

买书?买知识?

书是什么? 书籍只是知识的载体. 想要领会知识,还需要付出额外的时间和精力. 书贵么? 买书的几十元其实不算什么,珍贵的是读书的时间和注意力. 一本书只要有一部分内容有价值,有启发,自己收获了经验,最好还能联系实践.获得成长,那么就值回书价了. 如何做? 珍惜自己的时间,读好书,吸收好书内的知识. 同"爱读书.爱成长"的各位共勉!

个人项目——买书

用折后最低价买书 一.程序要求 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示: 本数                    折扣 2                       5% 3                       10% 4                       20% 5                       25% 根据购买的卷数以及本数,会对应不同折扣规则情况.单数一本书只会对应一个折