一、题目要求

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

}

四、实验截图:

五、个人总结

其实这个算法的设计花了一半的时间在纸上,而敲代码反而很快了,体现了算法思想的重要性。