刚刚接到一个这样的问题觉得有点意思,想让大家探讨一下(200分)

L

linuxnc

Unregistered / Unconfirmed
GUEST, unregistred user!
问题:
我厂正在不断生产货品,现有三位代理商家向我厂提货,这三位商家我厂根据其实力情况分别给他们定下了提货的百分比,也即是分配比率,这个比率是固定的.现在问题就是我厂生产的货品的数量不定数来的,但又想一直向这三位商家发出的货品都必须安照我们定下的百分比来把货品分发出去,以求做到合理,公平.这个程序如果实现呢?
现象:
商家我用A(n)表示 A1 10% A2 30% A3 60%
商家分得的货我用B(n)表示 B1 B2 B3
若我厂要分发的货品有 10 件
则由程序得到 B1 = 1 B2 = 3 B3 = 6
请大家探讨一下吧.我也是花了一个不眠之夜才搞定了.希望从大家的身上能得到更加好的理解思想.
我写的程序是这样大家下载来看看结果: http://www.china-xfby.com/fenpei.rar
 
分配率没有改变啊!
 
是不是按百分比分配阿?
设定厂商分配比例:a=10%, b=30%, b=60%
1.输入生产数量X
2.计算各厂商可以分到多少?
生产数量X乘各厂商的比例再取整就是啦,如果这样简单的话
是不是这样理解阿?
 
可能楼主的问题没说清楚哦,如果按你目前的描述,楼上的处理就够了阿,总数量*分配比例就好了。
是不是有其他分配原则呢?
 
当厂家每得到一个产品之后,商家的分配权限就会动态的降低,当降低到一定的比例时,分配优先权就会随之让给别个商家了.楼主是这样理解吗?
 
嗯,yemao_007的理解应该是对的.
因为我说了,每分配一个产品或一批产品都得分得公平合理,就是说我只有 7个商品,那要全部分给三位商家的话,哪个多些?哪个少些呢?又要按照比例化来分出去,所以每分得一个产品后,各个商家原来的分配比例应该说是会动态的改变一下的.当然如果刚好有十个商品要分配的话,那最后的结果必然会是 1 : 3 : 6 的分配完成的.这也是最后能验证各位的程序是不是正确的最好说明结果.
 
确实有意思。
但是意思有点绕。
 
好像只是简单的乘法问题呀
 
比率是固定,乘法
 
1.0<X<10 A 1 再看剩下的是否大于3(X-1>3?),不大于3等待分配(因为不断生产货品)大于3,B分配3
,C只能等待,一直到6数再分配
2.(1)10<x ,X mod 10
余数分配法同1
(2)X/10 取整
结果按10分比算(1/10,3/10,6/10)
 
只要知道總數和商家的比例就好計算了。
技術交流QQ:136293586
 
是不管多少产品都得分吗?
比率分别为 A/C B/C D/C(A<B<D) 最后分得X1 X2 X3
产品数 X
X < D 没有计算的意义了
X >= D
-5<i<5
((a+i)*X)mod C == 0 x1 = a+i;
((b+i)*X)mod c == 0 x2 = a+i;
((d+i)*X)mod c == 0 x3 = a+i;
这样可以得到一个比率近似的整数分配
 
动态优先级?好像操作系统里学过这方面的算法。在作业调度里面有的。
 
嗯,corn3讲出了精要了!正是这种思想才对的.再过一阵我就公布答案了.继续讨论一下吧.
 
我决得这个网址大全很实用的,请大家多多支持
http://16311.855.com
 
将产品数按照用户数求余,将余数按照用户序列1(按百分比的大小排列)依次给1个。剩下的产品按照百分率分别配给(乘法运算了吧)
出现百分数相乘得到小数的,必然成对出现,使用用户序列2(把用户序列1中将刚才没有获得余数的放到序列前面得到,即没有获得余数的升高优先级)进行分配。
这样就可以了吧!
不过写代码应该好多吧?
 
纠正一个:如果相乘出现小数的,必然多于一个,不是成对出现的。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
865
DelphiTeacher的专栏
D
顶部