一、题目要求
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。设计算法能够计算出读者购买一批书的最低价格。
二、思路
根据分析这个算法最核心的问题是解决6-9本书的购买方法。1-5本只要按一套买就能享受最大优惠。10本书以上时可化简为10本书以下的情况,如买11本和买6本是一样的。由计算得:
6本时5+1,
7本时5+2,
8本时4+4
9本时5+4
是最优惠的。
三、代码
1 #include<iostream.h> 2 void main() 3 { 4 while 5 int i,num,money,j; 6 cout<<"请输入买书数量:"; 7 cin>>num; 8 i=num%5; 9 j=num/5; 10 switch(i) 11 { 12 case 0: 13 money=j*30; 14 break; 15 case 1: 16 money=j*30+8; 17 break; 18 case 2: 19 money=j*30+2*8*0.95; 20 break; 21 case 3: 22 if(j=0) 23 { 24 money=3*8*0.9; 25 break; 26 } 27 else 28 { 29 money=(j-1)*30+4*8*0.8*2; 30 break; 31 } 32 case 4: 33 money=j*30+4*8*0.8; 34 break; 35 } 36 cout<<"最低消费为"<<money<<"块钱"<<endl; 37 }
四、截图
五、总结体会
在写这个程序时,我深刻体会到了算法的重要性,如果没有合适的算法,那么这个问题要实现就需要更复杂的过程。