zoukankan      html  css  js  c++  java
  • 如何买到更便宜的书

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

    根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
    设计算法能够计算出读者购买一批书的最低价格。

    设计代码

    #include<iostream>
    using  namespace  std;

    void main()
    {
     int  a,b,c;
     double  price;
     cout<<"请输入要买书的本数:";
     cin>>a;
     b=a/10;
     c=a%10;
     switch(c)
     {
        price=0;
        case 0:
        price=60*b;
        break;
        case 1:
        price=60*b+8;
           break;
        case 2:
           price=60*b+15.2;
           break;
        case 3:
        price=60*b+21.6;
           break;
        case 4:
           price=60*b+25.6;
           break;
        case 5:
        price=60*b+30;
           break;
        case 6:
           price=60*b+38;
           break;
        case 7:
        price=60*b+41.2;
           break;
        case 8:
           price=60*b+51.2;
           break;
        case 9:
        price=60*b+55.6;
           break;
     }
     cout<<"需要最少的钱为:"<<price;
    }

    思路:从买一本开始算,一直算到第十本,就可以知道1-10 本中最便宜的方案,超过十本之后你在慢慢仔细去算,就可以发现他们其实就是前面十本以内的搭配,例如11本就是5+5+1,21本就是5+5+5+5+1,这样就可以把算法转换到十本以内来计算。

    总结:switch语句早早的忘光了,原来在case后面是:而不是;还有break的作用真的很大,我第一次有一个地方没有加break,导致10笨的时候算到是68而不是60找了好久这个错误才找到,学会了一个知识点。

  • 相关阅读:
    Codeforces 512E
    UOJ #36 -【清华集训2014】玛里苟斯(线性基+暴搜)
    Codeforces 1188E
    洛谷 P7163
    C++ Boost库 操作日期与时间
    C/C++ 搜索缝隙并插入ShellCode
    线性代数学习之正交性,标准正交矩阵和投影
    洛谷 P5851 [USACO19DEC]Greedy Pie Eaters P(区间dp)
    洛谷 [NOIP2009 普及组] 道路游戏(dp)
    洛谷 P2890 [USACO07OPEN]Cheapest Palindrome G(区间dp)
  • 原文地址:https://www.cnblogs.com/jump/p/4504716.html
Copyright © 2011-2022 走看看