一、题目:
书店针对《哈利波特》系列书籍进行促销活动,一共5卷,单独一卷售价8元,具体折扣如下:本数对应的折扣分别为:2本—5%,3本—10%,4本—20%,5本—25%。根据购买的卷数以及本数,会对应不同的折扣规则情况。单独一本书只会对应一个折扣规则。设计算法能够计算出读者购买一批书的最低价格。
二、设计思路:
首先买两本以上才会享受折扣,先算出5、6、7、8、9五种情况下最优惠价格。
10本以上则是重复了这5种情况,将10本以上的拆为10种以下的情况。比如,当购买的这批书很多时,每5本享受的折扣是最多的,所以可看这批书最多包含多少5本,剩下一个5本和余数凑成一批10以下的情况,这样是最优惠的方法。
三、源代码:
四、运行结果:
五、心得体会:
开始拿到这个题目的时候,我理解的是要根据买的书目不同价格不同,其实每本书的价格都是一样的。
在解决这个问题的时候,首先我没有很好的思路,于是我从买5本书开始算,在算的过程中我发现,当数目越来越大时,其实是可以直接用前面的结果的,类似于递归算法。特别是在10的前后,因为当本数足够大时,每5本享受的优惠最高,所以要看它其中包含的5有多少,但是不能把5全部用掉,因为那样只剩下余数,可以将最后一个5与余数组合,成为一个小于10的组合,这样根据前面算出的5、6、7、8、9的最优惠价格计算出总的最优惠价格。
至于实现这个算法,可用输入的本数模5,结果加5,就与5、6、7、8、9这5种有关,根据它们的情况进行计算即可。
在理清思路后编程的过程中我也出现了几个小的错误。其中有价格变量bookmon的类型问题,之前没有考虑就将之设置为整型int,在编译时发现并改正了这个问题。
相关资源:ExWinner成套 价软件
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!