首页 > 技术文章 > 成套卖书最大优惠问题

luffyyang 2015-06-03 21:54 原文

一、设计思路:

      当买的书低于5本时,一本折扣为0两本为5%三本为10%四本为20%五       

      本为25%

      当买的书为6本时,6=5+15本成套购买,1本单独购买为最低价格。

      当买的书为7本时,7=5+25本成套购买,2本成套购买为最低价格。

      当买的书为8本时,8=5+3即5本成套购买,3本成套购买,折扣为35%

      而8=4+44本成套购买,4本成套购买折扣为40%为最低价格。

      当买的书为9本时,9=5+45本成套购买,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购买更加优惠,在之后大于十的情况便是五的倍数,依次累计即可。

在分析问题时要考虑全面,找到规律。

推荐阅读