一、题目要求
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
二、设计思路
本题其实并不复杂,只要找到了10本书内各种本术所对应的最小折扣方法即可,最后找到折扣方法:
所买本数 购买方法
1 1
2 2
3 3
4 4
5 5
6 1+5
7 2+5
8 4+4
9 4+5
10 5+5
三、实验代码:
package 折扣算法; import java.util.Scanner; public class Zhekou { public static double jisuan(int benshu) { double jiage = 0; int shiwei=benshu/10; int gewei=benshu%10; if(gewei>0&&gewei<10) { if(gewei==1) jiage=8; if(gewei==2) jiage=(8*2*0.95); if(gewei==3) jiage=(8*3*0.9); if(gewei==4) jiage=(8*4*0.8); if(gewei==5) jiage=(8*5*0.75); if(gewei==6) jiage=8+(8*5*0.75); if(gewei==7) jiage=(8*2*0.95)+(8*5*0.75); if(gewei==8) jiage=(8*4*0.8)+(8*4*0.8); if(gewei==9) jiage=(8*5*0.75)+(8*4*0.8); } jiage=jiage+(8*5*0.75)*2*shiwei; if(gewei>0&&gewei<=5) System.out.println("购买方案是买 "+shiwei+" 个十本和 "+gewei+" 本"); else if(gewei!=8) System.out.println("购买方案是买"+shiwei+"个十本和 "+(gewei-5)+" 本和 5 本"); else System.out.println("购买方案是买"+shiwei+"个十本和 4 本和 4 本"); return jiage; } public static void main(String args[]) { System.out.println("请输入要购买的本数"); Scanner scr=new Scanner(System.in); int benshu=scr.nextInt(); double jiage=jisuan(benshu); System.out.println("最低购买价格是"+jiage); } }
四、实验截图:
五、个人总结
其实这个算法的设计花了一半的时间在纸上,而敲代码反而很快了,体现了算法思想的重要性。