书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,
例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
1》设计思路:
首先在自己计算一下1到10本的最低价格:
其中1到5本的时候,都是按相应的折扣进行购买,就是最低价格
而6到10本就需要自己算一下了,其结果如下:
6本:5+1方案价格最低
7本:5+2方案价格最低
8本:4+4方案价格最低
9本:5+4方案价格最低
10本:5+5方案价格最低
所以10本以后就需要看除以5的余数就可以了,可以整除的那部分按5本折扣算,不能整除的按不能整除的有几本,就按几本折扣算,
其中当余数为3时,情况较为特殊,因为当有8本是4+4方案最优,应该是减去8本,那8本按4+4计算,其余的按5本的折扣计算
当然只有3本时,就输出3本书的情况。
2》源代码:
1 import java.util.*; 2 public class MinPrice { 3 public static void main(String args[]){ 4 Scanner sc =new Scanner(System.in); 5 6 double money=0;//总钱数 7 int biaoshi =1; //是否想继续的标识 8 while(biaoshi>0) 9 { 10 System.out.println("请输入你想购书的数量:"); 11 int num = sc.nextInt(); 12 13 int yushu=num%5; 14 switch(yushu) 15 { 16 case 0: 17 { 18 money=num*8*0.75; 19 break; 20 } 21 case 1: 22 { 23 money=(num-1)*8*0.75; 24 break; 25 } 26 case 2: 27 { 28 money=(num-2)*8*0.75+8*2*0.95; 29 break; 30 } 31 case 3: 32 { 33 if(num==3) 34 { 35 money=num*8*0.9; 36 break; 37 } 38 else 39 { 40 money=(num-8)*8*0.75+2*8*4*0.85; 41 break; 42 } 43 44 } 45 case 4: 46 { 47 money=(num-4)*8*0.75+8*4*0.8; 48 break; 49 } 50 } 51 System.out.println("书的最低价格为:"+money); 52 System.out.println("您是否继续,继续选1否则选0"); 53 biaoshi =sc.nextInt(); 54 } 55 56 } 57 }
结果截图:
总结:要注意总结规律,还要注意找出不同于常规的那个数,这往往是正确解决问题关键