• 买书本


    实验题目

    每本是8块钱
    买不同的书可以有优惠
    1    0    
    2    5%
    3    10%
    4    20%
    5    25%
    购买N本书,最少可花多少钱?

    实验思想

    下为购买不同书的最佳购买方案。
    1   8        Price
    2   15.2     Price*2*(1-0.05)
    3   21.6     Price*3*(1-0.1)
    4   25.6     Price*4*(1-0.2)
    5   30       Price*5*(1-0.25)
    6 可为 1,5(38)     2,4(40.6)  3,3(43.2)
    7 可为 2,5(35.2)   3,4(47.2) 
    8 可为 3,5(51.6)   4,4(51.2)
    9 可为 4,5(55.6)
    10可为 5,5(60)

    11以后与1-10 方案大致相同

    实验代码

     1 #include <iostream>
     2 using namespace std;
     3 #define Price 8
     4 void main()
     5 {
     6     int Num;   //购买的
     7     cout<<"请输入购买的数量:";
     8     cin>>Num;
     9     if(Num<=0)
    10     {
    11         cout<<"输入错误,请输入大于0的数。";
    12     }
    13     else
    14     {
    15         cout<<"最佳购买方案为:"<<endl;
    16         double Sum=0;  //需要的钱数
    17         if(Num%10==8) //判断除10余数为8的话,则为商*(Price*5*(1-0.25)*2)+ (Price*5*(1-0.25)+Price*3*(1-0.1))   8为(4+4)
    18         {
    19             Sum+=Num/10*Price*5*(1-0.25)*2+Price*4*(1-0.2)+Price*4*(1-0.2);
    20             if(Num/10!=0)
    21             {
    22                 cout<<""<<Num/10*2<<"个5本,";
    23             }
    24             cout<<"2个4本"<<endl;
    25             cout<<"最少可花的钱为:"<<Sum<<endl;
    26         }
    27         else
    28        {
    29             Sum+=Num/5*Price*5*(1-0.25);
    30             if(Num/5!=0)
    31             {
    32                 cout<<""<<Num/5<<"个5本"<<endl;
    33             }
    34             else if(Num%5!=0)
    35             {
    36                 cout<<"1个"<<Num%5<<""<<endl;
    37             }
    38             switch(Num%5)    
    39             {
    40             case 1:
    41                 Sum+=Price;
    42                 break;
    43             case 2:
    44                 Sum+=Price*2*(1-0.05);
    45                 break;
    46             case 3:
    47                 Sum+=Price*3*(1-0.1);
    48                 break;
    49             case 4:
    50                 Sum+=Price*4*(1-0.2);
    51                 break;
    52             case 5:
    53                 Sum+=Price*5*(1-0.25);
    54                 break;
    55             }
    56             cout<<"最少可花的钱为:"<<Sum<<endl;
    57         }
    58     }
    59 }

    实验截图

  • 相关阅读:
    POJ 1988 Cube Stacking(带权并查集)
    POJ 1414 Life Line(搜索)
    POJ 3468 A Simple Problem with Integers (线段树多点更新模板)
    二叉树前序遍历+中序遍历->后序遍历
    POJ 1061 青蛙的约会(扩展欧几里得)
    XDOJ 1020 ACMer去刷题吧(基础dp)
    POJ 2823 Sliding Window (线段树区间查询)
    线段树学习(一)
    UVA 294 Divisors( 因子分解)
    YYN图论学习路线(推荐)
  • 原文地址:https://www.cnblogs.com/L-Damon-v/p/5544859.html
Copyright © 2020-2023  润新知