想请教一个算法和实现方式:一商业促销活动,顾客购物,满400送120的券,满300送70的券,满200送50的券,但公式只能从最大值400,整除取余数再整除300,再取余数整除100,相加得结果,但当顾客金额大得时候,有可能出错,应为整除算出来得应给顾客得券数得结果,不一定是最大值,哪就是说,必须把顾客金额将这三个台阶,分别整除,并且排列组合,求出其中得最大值,小弟不知道如何这个算法,和实现方法,请大虾们指教

解决方案 »

  1.   

    同意 Maconel(Maconel)的意见,或者买300送80也可以
      

  2.   

    我想还是遍历
    因为计算量小的很,完全行的通
    算法简述如下:用户总购买量sumt=-1
    for i=0 to sum\400
        for j=0 to (sum-i*400)\300
            for k=0 to (sum-i*400-j*300)\200
                total=i*120+j*70+k*50
                if total>t then
                    t=total
                    i0=i
                    j0=j:k0=k
                end if 
    next k,j,i 
    debug.print "总额:",t
    debug.print "方法:",i0,j0,k0
    这样按total最大的那个i,j,k分配也就是400 i0份.....就行了