博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件工程课堂练习——求买书最低价格
阅读量:6848 次
发布时间:2019-06-26

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

题目及要求:

书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。

一、设计思想

1、若购买的图书不超过5本,那么分一次购买且购买不同的书籍最便宜。
2、若购买的图书本书大于5本,少于10本,我将买6,7,8,9本书的情况都列举出来,发现:
买6本:分两次购买,5本1本最便宜
买7本:分两次购买,5本2本最便宜
买8本:分两次购买,4本4本最便宜
买9本:分两次购买,5本4本最便宜
3、当购买的图书大于10本时,由于买5本时折扣最高,所以用购买数量模5,余数+5就会对应6,7,8,9本的情况,买(商-1)次5本,这样可是价格最低。

二、源程序

package com.java.lianxi;import java.util.Scanner;public class lianxi5 {    public static void main(String[] args)    {        System.out.print("请输入购买图书的数量:(大于10)");        Scanner in=new Scanner(System.in);        int count=in.nextInt();        double sum = 0;        double array[]={38,45.2,51.2,55.6};        if(count>10)        {            sum=(count/5-1)*40*0.75+array[count%5-1];        }        else        {            System.out.print("请重新输入购买数量:(大于10)");            count=in.nextInt();            sum=(count/5-1)*40*0.75+array[count%5-1];        }        System.out.print("最低价格为:"+sum);            }}

三、结果截图

四、心得体会

  刚刚拿到这道题目,老师就给了部分思路,于是我就顺着老师的思路想,由于买5本时折扣最大,买5本以下,一次性全部购买最便宜,买6-9本,我列举出了各个情况,选出了最低价格的情况,10以上可以分解成几个5本和6,7,8,9的情况,起初考虑到买书的重复性,以为买那些书是由买主决定的,后来发现我想多了,不用考虑这种情况,为了实现最优惠,保证每次买书都没有重复的就行了。设计算法时,一定要学会用已经实现的去估计没有实现的,将新的问题转化为旧的问题。

转载于:https://www.cnblogs.com/maximumminimum/p/4428257.html

你可能感兴趣的文章
21.Spring Boot 使用Java代码创建Bean并注册到Spring中
查看>>
window.location.href的用法
查看>>
C# MVC中直接执行Js
查看>>
mac book下批量替换多个文件中的字符
查看>>
python IO编程-序列化
查看>>
9.回文数
查看>>
[转] 使用NVM快速搭建NODE开发环境
查看>>
pip国内源
查看>>
java的一些基本概念
查看>>
uva 796(求割边)
查看>>
sas数组,数组的语法与一些特殊定义,获取维度大小
查看>>
Codeforces_779_D.String Game_(二分)
查看>>
Java生成某段时间内的随机时间
查看>>
学习CSS3动画(animation)
查看>>
FFmpeg+vs2013开发环境配置(windows)
查看>>
爬虫 spider
查看>>
poj 3041——Asteroids
查看>>
洛谷——P1126 机器人搬重物
查看>>
redis在Linux上的部署和jedis简单使用
查看>>
Code First 迁移更新数据库
查看>>