一、设计思路:
当买的书低于5本时,一本折扣为0,两本为5%,三本为10%,四本为20%,五
本为25%;
当买的书为6本时,6=5+1即5本成套购买,1本单独购买为最低价格。
当买的书为7本时,7=5+2即5本成套购买,2本成套购买为最低价格。
当买的书为8本时,8=5+3即5本成套购买,3本成套购买,折扣为35%,
而8=4+4即4本成套购买,4本成套购买折扣为40%,为最低价格。
当买的书为9本时,9=5+4即5本成套购买,4本成套购买为最低价格。
当买的书为10本时,10=5+5为最低价格。
当买的书为11本时,11=5+5+1为最低价格。
当买的书为12本时,12=5+5+2为最低价格。
以此类推。
即当大于10本时,最大限度按5套购买,其余剩余按最大的购买为最低价格。
二、代码
package 买书折扣; import java.util.Scanner; public class buy { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner A=new Scanner(System.in); double i=0; int k; System.out.println("请输入所购书本数:"); int n=A.nextInt(); System.out.println("请输入所购书单价:"); int m=A.nextInt(); k=n%5; if(k==0) { i=m*(n/5)*0.25; } if(k==1) { i=m*(n/5*0.25); } if(k==2) { i=m*(0.05+n/5*0.25); } if(k==3) { if(n==8) { i=m*(n/4*0.2); } else { i=m*(0.1+n/5*0.25); } } if(k==4) { i=m*(0.2+n/5*0.25); } System.out.println("购买"+n+"本书可省价格为:"); System.out.print(i); } }
三、结果
四、总结与收获
因为考虑最大优惠问题,所以多本购买就考虑组合最大的优惠,当然少于五本时并无争议,当大于五本时,五本成套购买为最大优惠,其余的剩余成套购买是另一种优惠,但在八本时出现特殊情况:8=5+3即5本成套购买,3本成套购买,折扣为35%,而8=4+4即4本成套购买,4本成套购买折扣为40%,所以分为4/4购买更加优惠,在之后大于十的情况便是五的倍数,依次累计即可。
在分析问题时要考虑全面,找到规律。