作者snes6303st (XD)
站内Prob_Solve
标题[问题] 排队问题
时间Sat Dec 28 19:08:34 2013
有N个人 N>=5 都要入场去三家店购物
入场时抽签决定顺序,要怎麽样设计抽签法 让每个人三家店购物的顺序之和相同?
例:
A店 B店 C店 和
甲 4 3 2 9
乙 1 4 4 9
丙 3 5 1 9
丁 2 2 5 9
戊 5 1 3 9
以下提供别人写好的解法,但是我完全不懂为什麽...
先随机决定A的顺序(customers[i].A)
var count = customers.length;
var half = (count % 2) ? count / 2 ; (count-1) / 2;
foreach(customers as customer){
if(count % 2 == 0){
if(customer.A <= half){
customer.B = count - 2 * (customer.A - 1);
customer.C = customer.A + half;
}else{
customer.B = count - 1 - 2*(customer.A - half -1);
customer.C = customer.A - half;
}
}else{
if(customer.A <= half){
customer.B = count -1 - 2 * (customer.A -1);
customer.C = customer.A + half +1;
}else{
customer.B = count - 2 * (customer.A - (count + 1) / 2)
customer.C = customer.A - half;
}
}
}
希望有板友能稍作解释
谢谢大家...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.171.179.234
※ 编辑: snes6303st 来自: 1.171.179.234 (12/28 21:09)
1F:推 Favonia:刚才以为每家店的 1 号要同时进去,结果发现无解 xD 12/28 23:18
再解释的详细一点
※ 编辑: snes6303st 来自: 1.171.179.234 (12/28 23:49)
2F:→ CaptainH:每人顺序和 = 3(N+1)/2 , N要奇数才可能有解... 12/29 00:40
3F:→ snes6303st:那麽偶数应该要求各人之间 和的变异最小 12/29 00:45
4F:推 DJWS:看起来比 magic labeling 还要复杂一点 12/29 09:24
※ 编辑: snes6303st 来自: 1.171.166.199 (12/29 12:54)
※ 编辑: snes6303st 来自: 1.171.166.199 (12/29 12:55)
※ 编辑: snes6303st (101.14.64.86), 04/10/2016 19:59:13