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到10本的最低价格:
    其中1到5本的时候,都是按相应的折扣进行购买,就是最低价格
    而6到10本就需要自己算一下了,其结果如下:
    6本:5+1方案价格最低
    7本:5+2方案价格最低
    8本:4+4方案价格最低
    9本:5+4方案价格最低
    10本:5+5方案价格最低
     
    所以10本以后就需要看除以5的余数就可以了,可以整除的那部分按5本折扣算,不能整除的按不能整除的有几本,就按几本折扣算,
    其中当余数为3时,情况较为特殊,因为当有8本是4+4方案最优,应该是减去8本,那8本按4+4计算,其余的按5本的折扣计算
    当然只有3本时,就输出3本书的情况。
     
    2》源代码:
     1 import java.util.*;
     2 public class MinPrice {
     3     public  static void main(String args[]){
     4         Scanner sc =new Scanner(System.in);
     5         
     6         double money=0;//总钱数
     7         int biaoshi =1; //是否想继续的标识
     8         while(biaoshi>0)
     9         {
    10             System.out.println("请输入你想购书的数量:");
    11             int num = sc.nextInt();
    12             
    13             int yushu=num%5;
    14             switch(yushu)
    15             {
    16                 case 0:
    17                 {
    18                     money=num*8*0.75;
    19                     break;
    20                 }
    21                 case 1:
    22                 {
    23                     money=(num-1)*8*0.75;
    24                     break;
    25                 }
    26                 case 2:
    27                 {
    28                     money=(num-2)*8*0.75+8*2*0.95;
    29                     break;
    30                 }
    31                 case 3:
    32                 {
    33                     if(num==3)
    34                     {
    35                         money=num*8*0.9;
    36                         break;
    37                     }
    38                     else
    39                     {
    40                         money=(num-8)*8*0.75+2*8*4*0.85;
    41                         break;
    42                     }
    43                     
    44                 }
    45                 case 4:
    46                 {
    47                      money=(num-4)*8*0.75+8*4*0.8;
    48                      break;
    49                 }
    50             }
    51             System.out.println("书的最低价格为:"+money);
    52             System.out.println("您是否继续,继续选1否则选0");
    53             biaoshi =sc.nextInt();
    54         }
    55         
    56     }
    57 }

    结果截图:

    总结:要注意总结规律,还要注意找出不同于常规的那个数,这往往是正确解决问题关键

  • 相关阅读:
    原来这样就可以开发出一个百万量级的Android相机
    微信读书这样排版,看过的人都很难忘!
    AI小白快上车!这是发往高薪职位的车!
    短视频APP是如何开启你的美好生活的?
    自从我这样撸代码以后,公司网页的浏览量提高了107%!
    如果想成为一名顶尖的前端,这份书单你一定要收藏!
    老板今天问我为什么公司的数据库这么烂,我是这样回答的......
    MapReduce Notes
    HDFS Architecture Notes
    BloomFilter
  • 原文地址:https://www.cnblogs.com/sz20142898/p/5543038.html
Copyright © 2011-2022 走看看