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

                                         

    题目:

    书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:                                本数                  折扣                                    2                       5%                                    3                       10%                                    4                       20%                                    5                       25%

    根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。 设计算法能够计算出读者购买一批书的最低价格。 要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。

    解决思路:

    总结题目规律如下:

    购书本数  购书搭配 所需钱数 花费最少的搭配组合
    1 1 8          1
    2 2 15.2          2
    3 3 21.6          3
    4 4 25.6          4
    5 5 30          5
    6 5+1  4+2  3+3 38      40.8   43.2          5+1
    7 5+2  4+3 45.2   47.2          5+2
    8 5+3  4+4 51.6   51.2          4+4
    9 5+4  55.6          5+4
    10 5+5 60          5+5

    发现归律如下:

    1.当购书本数在0-10之间时,对应的购书策略如上表所示;

    2.当购书本书大于10时,相应的购书策略为:每10本书一组,对书本进行分组,完整的组最低的价格为60元,不完整的组对应1求取最小的花费,最后求和。

    源代码

    (繁琐版)

    #include<iostream>

    using namespace std;

    void main()

    {  

    int sum,a,b;  

    double less;  

    cout<<"请输入购书的本数:";  

    cin>>sum;  

    a=sum/10;  

    b=sum%10;  

    switch(b)  

    {   

          less=0;

          case 0:

          less=60*a;

          break;

          case 1:

          less=60*a+8;

          break;

          case 2:

          less=60*a+15.2;

          break;

          case 3:

          less=60*a+21.6;

          break;

          case 4:

          less=60*a+25.6;

          break;

          case 5:

          less=60*a+30;

          break;

          case 6:

          less=60*a+38;

          break;

          case 7:

          less=60*a+45.2;

          break;

          case 8:

          less=60*a+51.2;

          break;

          case 9:

          less=60*a+55.6;

          break;

     }

     cout<<"最低价格为:"<<less;

    }

    (改进版)

    #include<iostream>

    using namespace std;

    void main()

    {  

    int sum,a,b;  

    double less;  

    cout<<"请输入购书的本数:";  

    cin>>sum;  

    a=sum/10; 

    b=sum%10;

    less=0;

    switch(9-b)  

    {   

    case 0:    

    less+=4.4;      

    case 1:    

    less+=6;      

    case 2:   

    less+=7.2;   

    case 3:    

    less+=8;      

    case 4:    

    less+=4.4;      

    case 5:    

    less+=4;       

    case 6:    

    less+=6.4;      

    case 7:    

    less+=7.2;     

    case 8:    

    less+=8;      

    case 9:    

    less+=60*a;  

    }  

    cout<<"最低价格为:"<<less<<endl;

    }

    测试截图

    总结:发现事物暗藏的规律是决绝问题的关键。

  • 相关阅读:
    HTML导航
    html5学习笔记
    crm使用soap启用和停用记录
    crmjs区分窗口是否是高速编辑(2)
    关于strace的一点东西
    Android studio第一次使用配置(三)gradle项目构建
    IntelliJ IDEA 问题总结之二(待补充) —— 快捷键、主题样式、导出jar、sqlite
    spark之map与flatMap差别
    leetcode:String to Integer (atoi)
    oracle索引的操作
  • 原文地址:https://www.cnblogs.com/bdqczhl/p/4491254.html
Copyright © 2011-2022 走看看