zoukankan      html  css  js  c++  java
  • 书店促销

                                       书店促销

        在节假日的时候,书店一般都会做促销活动。由于《哈利波特》系列相当畅销,店长决定通过促销活动来回馈读者。在销售的《哈利波特》平装本系列中,一共有五 卷,用编号0, 1, 2, 3, 4来表示。假设每一卷单独销售均需要8欧元。如果读者一次购买不同的两卷,就可以扣除5%的费用,三卷则更多。假设具体折扣的情况如下:

          本数          折扣

          2          5%

          3          10%

          4           20%

          5           25%

     在一份订单中,根据购买的卷数以及本书,就会出现可以应用不同折扣规则的情况。但是,一本书只会应用一个折扣规则。比如,读者一共买了两本卷一,一本卷二。那么,可以享受到5%的折扣。另外一本卷一则不能享受折扣。如果有多种折扣,希望能够计算出的总额尽可能的低。要求根据这样的需求,设计出算法,能够计算出读者所购买一批书的最低价格。

    一.设计思路

     在小于5本的情况下,直接按折扣买就好了,在大于5本的情况下,买法如下(对应折扣=本数*折扣):

        本数      可能的分解本数      对应的折扣

         6     =5+1        1.25

         7     =5+2      1.35

         8     =4+4      1.6

         9     =5+4      2.05

         10     =5+5               2.5

    在大于10本的情况下,可以分解为以上小于10本的情况来计算。

    设n为输入的书本数,当(num%5!=3)成立时,则对应上面的6,7,9三种折扣,当(num%5==3&&num!=3)成立时,则对应上面的8的折扣。

    二.代码实现:

    //书店促销
    //孔宇航 2016/5/30
    #include<iostream>
    using namespace std;
    int main()
    {
        double b,sum;
        int a,num,c;      //a为购买数量除以5的整数部分,c为余数
        cout<<"请输入要购买的书的数目:";
        cin>>num;
        if(num%5!=3)
        {
          a=num/5;
          b=30*a;
          c=num%5;
          if(c==0)
          {
             sum=b;
          }
          if(c==1)
          {
              sum=b+8;
          }
          else if(c==2)
          {
              sum=b+16*0.95;
          }
          else if(c==3)
          {
              sum=b+24*0.9;
          }
          else if(c==4)
          {
              sum=b+32*0.8;
          }
        }
        else if(num==3)
        {
            sum=24*0.9;
        }
        else if(num%5==3&&num!=3)
        {
          a=num/5;
          b=30*(a-1);
          c=num%5;
          sum=b+32*0.8*2;
        }
        cout<<"最划算的价格为:"<<sum<<endl;
        return 0;
    }

    三.运行结果

    四.个人总结

       课堂上老师的领导下有了点小思路,后来在网上查阅资料时了解到了贪心算法,正好符合这个题目,就尝试了一下。如果用数量除10取余数讨论情况太多,想了又想还是除以5取余再讨论,实验顺利的完成了。

  • 相关阅读:
    python pandas groupby
    ORC 资料Mark
    python split() 用法
    Hive 中的变量
    特征选择方法
    Introduction to SIFT (Scale-Invariant Feature Transform)
    SIFT 、Hog 、LBP 了解
    python None 和 NaN
    判断特征中是否含有空值、空值填充
    vue 子组件引用
  • 原文地址:https://www.cnblogs.com/kongyuhang/p/5543373.html
Copyright © 2011-2022 走看看