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

    一、题目描述

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

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

    二、设计思路

      无论购买数的数量多少,均与6~10这5个数类似,或者说是相关,算出在这5中情况下最优购书方法,基本可以确定其他数目的最优购书方法。计算可得如下结果,

      6本,以5,1方式购买最实惠;

      7本,以5,2方式购买最实惠;

      8本,以4,4方式购买最实惠;

      9本,以5,5方式购买最实惠;

      10本,以5,5方式购买最实惠。

      书写过程中判断了两个大的判断条件,即书的数目没有超过10和超过10,来改变输出结果的不同(结果文字描述的差别)

    三、代码实现

     1 //刘双渤,以最优惠的价格购买图书问题
     2 #include <iostream>
     3 using namespace std;
     4 
     5 void main()
     6 {
     7     int n;
     8     int kyu,kshang;
     9 
    10     cout<<"请输入购书本书:"<<endl;
    11     cin>>n;
    12 
    13     while(n <= 0)                         //数目小于等于0为不合法
    14     {
    15         cout<<"输入值有错,请重新输入:"<<endl;
    16         cin>>n;
    17     }
    18 
    19     if(n <= 10 && n > 0)                  //书的数目小于等于10
    20     {
    21         if(n == 8)
    22         {
    23             cout<<"购2套书,每不同4本为一套。"<<endl;
    24         }
    25         else if(n == 10)
    26         {
    27             cout<<"购2套书,每不同5本为一套。"<<endl;
    28         }
    29         else
    30         {
    31             kshang = n/5;
    32             kyu = n%5;
    33 
    34             if(kshang == 0)
    35             {
    36                 cout<<"购1套书,每不同"<<kyu<<"本为一套。"<<endl;
    37             }
    38             else if(n == 5)
    39             {
    40                 cout<<"购1套书,每不同5本为一套。"<<endl;
    41             }
    42             else
    43             {
    44                 cout<<"购2套书,不同"<<kyu<<"本为一套,不同5本为一套。"<<endl;
    45             }
    46         }
    47     }
    48     else                                       //数目大于10
    49     {
    50         kshang = n/5;
    51         kyu = n%5;
    52 
    53         if(kyu == 3)
    54         {
    55             cout<<""<<kshang + 1<<"套书,"<<kshang - 1<<"套为不同5本为一套,"<<"2套为不同4本为一套。"<<endl;
    56         }
    57         else if(kyu == 2 || kyu == 4)
    58         {
    59             cout<<""<<kshang + 1<<"套书,"<<kshang<<"套为不同5本为一套,"<<"1套为不同"<<kyu<<"本为一套。"<<endl;
    60         }
    61         else if(kyu == 1)
    62         {
    63             cout<<""<<kshang + 1<<"套书,"<<kshang<<"套为不同5本为一套,"<<"1套为1本为一套。"<<endl;
    64         }
    65         else
    66         {
    67             cout<<""<<kshang<<"套书,"<<"全部为5本不同为一套。"<<endl;
    68         }
    69     }
    70 }
    View Code

    四、实现截图

    五、个人总结

      题目虽然简单,但却能考验一下严谨性,写的代码可能相对有些长,也面面俱到了。

      还有记性真是有点差。

  • 相关阅读:
    Android为TV端助力listview 非常重要的几个属性
    AndroidTV端的requestFocus()问题
    Android TV端的(RecyclerView)水平滚动焦点错乱问题
    Android为TV端助力完美超级实用的ADB命令大全
    Android为TV端助力(转载)
    Android为TV端助力 反编译
    Android为TV端助力 最完整的Glide解析
    Android为TV端助力 eclipse build project 出现major.minor version 52.0的问题
    Android为TV端助力 UDP协议
    Android为TV端助力 完全解析模拟遥控器按键
  • 原文地址:https://www.cnblogs.com/little-clever/p/4505090.html
Copyright © 2011-2022 走看看