zoukankan      html  css  js  c++  java
  • 最优买书问题

    1. 题目:

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

    本数 折扣 2    5%

                 3    10%

                 4    20%

                 5    25%

          根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。

          设计算法能够计算出读者购买一批书的最低价格。

    2. 设计思想:

          如果购买的本书小于等于5本,则有多少本买多少本不一样的。如果大于5本,则需要考虑。比如6本,是3 3优惠,还是5 1优惠等等。每5个为一个循环,所以只需要考虑6到10就可以了。其中6 7 9都是5和余数最省钱。而8则是4 4最省钱,所以这是一个例外,需要考虑。

    3. 源代码

    #include<iostream>
    using namespace std;
    
    
    int main()
    {
        int num;
        double money;
        cout<<"请输入要买图书本书:";
        cin>>num;
        
        if(num<=0)
        {
            cout<<"请重新输入要买图书个数:";
         }
        else if(num>0)
        {
            int m=num/5;
            int n=num%5;
            if(m==0)
            {
                if(n==0)
                {
                    money=0;
                }
                else if(n==1)
                {
                    money=8;
                }
                else if(n==2)
                {
                    money=8*2*(1-0.05);
                }
                else if(n==3)
                {
                    money=8*3*(1-0.10);
                }
                else if(n==4)
                {
                    money=8*4*(1-0.20);
                }
            }
            else if(m>0)
            {
                if(n==0)
                {
                    money=5*m*8*(1-0.25);
                }
                else if(n==1)
                {
                    money=5*8*m*(1-0.25)+8;
                }
                else if(n==2)
                {
                    money=5*8*m*(1-0.25)+8*2*(1-0.05);
                }
                else if(n==3)
                {
                    money=5*8*(m-1)*(1-0.25)+8*4*2*(1-0.20);
                }
                else if(n==4)
                {
                    money=5*8*m*(1-0.25)+8*4*(1-0.20);
                }
            }
        }
        cout<<"最低价格为:"<<money<<""<<endl;
        return 0;
    }

    4.程序结果截图:

    5.总结

    编程时要考虑特里情况和普遍情况,从中找寻规律实现算法。

  • 相关阅读:
    Android基本功:Socket
    Javascript模板及其中的数据逻辑分离思想
    MFC,QT与WinForm,WPF简介
    GPIB、USB、PCI、PCI Express和以太网/LAN/LXI
    Office批量授权(VL)版本和激活方法
    Labview 错误1400-打包库封装类时将对类重命名导致
    console.log()
    a标签中href=""的几种用法
    正斜杠"/"与反斜杠""
    提问的艺术
  • 原文地址:https://www.cnblogs.com/hyluckydog/p/5558441.html
Copyright © 2011-2022 走看看