一、题目要求
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
二、设计思路
初看题目,会觉得题目解决很简单,按5的余数及商求解即可,但是,当我们往后依次列出最低价格,发现当麦8本时,最优解并不是5+3,而是4+4,这时题目就没有那么简单了。
我们按10的余数及商求解,便可以将所有的情况算出最优解。
三、代码
1 //找最优折扣 2 3 import java.util.Scanner; 4 public class KT_530 { 5 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 9 Scanner in=new Scanner(System.in); 10 11 int n;//购买书籍数量 12 System.out.print("输入购买书的数量:"); 13 n=in.nextInt(); 14 15 double money;//花费 16 money=FindMin(n); 17 18 //输出 19 System.out.print("买"+n+"本书的最优花费为:"+money+"元。"); 20 21 } 22 23 static double FindMin(int n) 24 { 25 double money=0; 26 27 int shang=0,yushu=0; 28 shang=n/10; 29 yushu=n%10; 30 31 money=shang*8*5*2*0.75; 32 33 if(yushu==0) 34 { 35 36 } 37 if(yushu==1) 38 { 39 money+=8; 40 } 41 if(yushu==2) 42 { 43 money+=8*2*0.95; 44 } 45 if(yushu==3) 46 { 47 money+=8*3*0.9; 48 } 49 if(yushu==4) 50 { 51 money+=8*4*0.8; 52 } 53 if(yushu==5) 54 { 55 money+=8*5*0.75; 56 } 57 if(yushu==6) 58 { 59 money+=8*5*0.75; 60 money+=8*1; 61 } 62 if(yushu==7) 63 { 64 money+=8*5*0.75; 65 money+=8*2*0.95; 66 } 67 if(yushu==8) 68 { 69 money+=8*4*2*0.8; 70 } 71 if(yushu==9) 72 { 73 money+=8*5*0.75; 74 money+=8*4*0.8; 75 } 76 return money; 77 } 78 79 }
四、截图
浙公网安备 33010602011771号