算法难题求解

bain99 2004-01-16 09:18:50
想请教一个算法和实现方式:一商业促销活动,顾客购物,满400送120的券,满300送70的券,满200送50的券,但公式只能从最大值400,整除取余数再整除300,再取余数整除100,相加得结果,但当顾客金额大得时候,有可能出错,应为整除算出来得应给顾客得券数得结果,不一定是最大值,哪就是说,必须把顾客金额将这三个台阶,分别整除,并且排列组合,求出其中得最大值,小弟不知道如何这个算法,和实现方法,请大虾们指教
...全文
136 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengoodman 2004-01-16
  • 打赏
  • 举报
回复
mark
kmzs 2004-01-16
  • 打赏
  • 举报
回复
呼呼
flyingscv 2004-01-16
  • 打赏
  • 举报
回复
我想还是遍历
因为计算量小的很,完全行的通
算法简述如下:

用户总购买量sum

t=-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份.....就行了
northwolves 2004-01-16
  • 打赏
  • 举报
回复
应该 满300送80,呵呵
rainstormmaster 2004-01-16
  • 打赏
  • 举报
回复
同意 Maconel(Maconel)的意见,或者买300送80也可以
wp03141592 2004-01-16
  • 打赏
  • 举报
回复
看不懂
好多别字
Maconel 2004-01-16
  • 打赏
  • 举报
回复
你们这个促销活动有问题。
比如顾客买了1200的东西,
按400给120的算,该给120*3=360
按300给70的算,该给70*4=280
按200给50的算,该给50*6=300
结果可以看到400的是没问题的,但是按200给却比按300给还给的多。
这样的促销应该是比例越来越小才对
120/400=0.3
70/300=0.23333……
50/200=0.25
可以看出来了吧,这就是你算法出问题的根源。
200*0.2333……=46.666666……
买200的时候应该是46.6666元以下,可以是40或45。
o光o 2004-01-16
  • 打赏
  • 举报
回复
因为 1200 是400,300,200的最小公倍数 所以
使用 金额/1200 取余数

満 1200 送 360
満 1000 送 120+120+50
満 900 送 120+120=120+70+50
満 700 送 120+70
満 600 送 120+50
満 500 送 120=70+50

所有的数都是能整除400 的时候最大
所以 整除400取余数再整除300,再取余数整除100,相加得结果 就是最大值了

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧