博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
课堂练习之买书打折最便宜
阅读量:4313 次
发布时间:2019-06-06

本文共 2507 字,大约阅读时间需要 8 分钟。

一、设计思路

  当买书的数量超过五本的时候,想让价钱最便宜,就必须尽可能的让书可以凑成一套书,也就是可以连续成套,这样就能保证能够更多的享受打折的优惠,所以:

当买6本书时,选择的购买方式是:五本一套,另加一单本,5+1;

当买7本书时,选择的购买方式是:5+2;

当买8本书时,选择的购买方式是:4+4;

当买9本书时,选择的购买方式是:5+4;

当超过10本书,就可以借助上面的方法,以此类推。

二、程序代码

1 import java.util.*; 2 class Bargain  3 { 4     public static void main(String[] args)  5     { 6         double sum = 0;    7         System.out.println("请输入您要购买的本数:"); 8         Scanner sc = new Scanner(System.in); 9         int num = sc.nextInt();10 11         if(num<=5)//购买书的本数不超过五本12         {13            switch(num)14            {15            case 1:16                sum=8;//不打折17            break;18            case 2:19                sum=2*8*0.95;//95折20            break;21            case 3:22                sum=3*8*0.9;//9折23            break;24            case 4:25                sum=4*8*0.8;  //8折26            break;27            case 5:28                sum=5*8*0.75;  //75折29            break;30            }31         }32         if(num>5&&num<=9)33         {34             sum=method(num);      35         }36         if(num>=10)      //买的书本数超过10本      37         {38             switch(num%5)39            {40                 case 0:41                     sum=(num/5)*8*5*0.75;42                 break;43                 case 1:44                     sum=(num/5-1)*8*5*0.75+method(6);45                 break;46                 case 2:47                     sum=(num/5-1)*8*5*0.75+method(7);48                 break;49                 case 3:50                     sum=(num/5-1)*8*5*0.75+method(8);51                 break;52                 case 4:53                     sum=(num/5-1)*8*5*0.75+method(9);54                 break;55            }56         }57 58         System.out.println("最便宜的价钱为:"+sum+"元");59     }60 61 62     public static double method(int a)//买书的本数为6、7、8、963     {   64         double min = 0;65         int temp = a%5;66         switch(temp)67         {68             case 1:69                 min=5*8*0.75+8;70             break;71             case 2:72                 min=5*8*0.75+2*8*0.95;73             break;74             case 3:75                 min=4*8*0.8+4*8*0.8;76             break;77             case 4:78                 min=5*8*0.75+4*8*0.8;79             break;   80         }81         return min;   82     }83 }

三、结果截图

四、新特体会

  在想这个思路的时候,一开始把这个想的很复杂,以为需要考虑确定本书后,还要确定买书的种类,但是试验了几个后,发现完全没有必要这样考虑,可以直接考虑尽可能的让买的书能凑成一套书,这样自然的就可以得到最低的价钱,但是当模5取余为8的情况下,是比较特殊的,最后两种还是要分成4+4,这样就没什么问题了

转载于:https://www.cnblogs.com/KevinBin/p/4428875.html

你可能感兴趣的文章
js正則表達式语法
查看>>
Git学习系列-Git基本概念
查看>>
c#多个程序集使用app.config 的解决办法
查看>>
Linux+Apache+PHP+MySQL服务器环境配置(CentOS篇)
查看>>
Linux下获取本机IP地址的代码
查看>>
(C#)调用Webservice,提示远程服务器返回错误(500)内部服务器错误
查看>>
flex布局
查看>>
python-----python的文件操作
查看>>
java Graphics2d消除锯齿,使字体平滑显示
查看>>
控件中添加的成员变量value和control的区别
查看>>
Spring Boot Docker 实战
查看>>
Div Vertical Menu ver3
查看>>
Git简明操作
查看>>
InnoDB为什么要使用auto_Increment
查看>>
课堂练习之买书打折最便宜
查看>>
定义函数
查看>>
网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP
查看>>
MQTT协议笔记之mqtt.io项目HTTP协议支持
查看>>
(转)jQuery中append(),prepend()与after(),before()的区别
查看>>
Tecplot: Legend和图像中 Dashed/Dash dot/Long dash 等虚线显示没有区别的问题
查看>>