书店促销

                                     

题目:

书店针对《哈利波特》系列书籍进行促销活动,一共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;

}

 

(改进版)

#include<iostream>

using namespace std;

void main()

{  

int sum,a,b;  

double less;  

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

cin>>sum;  

a=sum/10; 

b=sum%10;

less=0;

switch(9-b)  

{   

case 0:    

less+=4.4;      

case 1:    

less+=6;      

case 2:   

less+=7.2;   

case 3:    

less+=8;      

case 4:    

less+=4.4;      

case 5:    

less+=4;       

case 6:    

less+=6.4;      

case 7:    

less+=7.2;     

case 8:    

less+=8;      

case 9:    

less+=60*a;  

}  

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

}

测试截图

 

总结:发现事物暗藏的规律是决绝问题的关键。

 

posted @ 2015-05-09 21:51  巴蒂青葱  阅读(132)  评论(0编辑  收藏  举报