码迷,mamicode.com
首页 > 其他好文 > 详细

读者购买一批书的最低价格

时间:2015-05-14 15:51:11      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:

题目:

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

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

 

解决思路:

总结题目规律如下:

购书本数  购书搭配 所需钱数 花费最少的搭配组合
1 1 8          1
2 2 15.2          2
3 3 21.6          3
4 4 25.6          4
5 5 30          5
6 5+1  4+2  3+3 38      40.8   43.2          5+1
7 5+2  4+3 45.2   47.2          5+2
8 5+3  4+4 51.6   51.2          4+4
9 5+4  55.6          5+4
10 5+5 60          5+5

发现归律如下:

1.当购书本数在0-10之间时,对应的购书策略如上表所示;

2.当购书本书大于10时,相应的购书策略为:每10本书一组,对书本进行分组,完整的组最低的价格为60元,不完整的组对应1求取最小的花费,最后求和。

 

源代码

#include<iostream>

using namespace std;

void main()

{  

int sum,a,b;  

double less;  

cout<<"请输入购书的本数:";  

cin>>sum;  

a=sum/10;  

b=sum%10;  

switch(b)  

{   

      less=0;

      case 0:

      less=60*a;

      break;

      case 1:

      less=60*a+8;

      break;

      case 2:

      less=60*a+15.2;

      break;

      case 3:

      less=60*a+21.6;

      break;

      case 4:

      less=60*a+25.6;

      break;

      case 5:

      less=60*a+30;

      break;

      case 6:

      less=60*a+38;

      break;

      case 7:

      less=60*a+45.2;

      break;

      case 8:

      less=60*a+51.2;

      break;

      case 9:

      less=60*a+55.6;

      break;

 }

 cout<<"最低价格为:"<<less;

}

测试截图

技术分享

技术分享

 

读者购买一批书的最低价格

标签:

原文地址:http://www.cnblogs.com/bdqczhl/p/4503161.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!