[問題] 排隊問題

作者: snes6303st (XD)   2013-12-28 19:08:34
有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.B-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;
}
}
}
希望有板友能稍作解釋
謝謝大家...
作者: Favonia (00010110110001101010100)   2013-02-28 23:18:00
剛才以為每家店的 1 號要同時進去,結果發現無解 xD
作者: CaptainH (Cannon)   0000-00-00 00:00:00
每人順序和 = 3(N+1)/2 , N要奇數才可能有解...
作者: snes6303st (XD)   0000-00-00 00:00:00
那麼偶數應該要求各人之間 和的變異最小
作者: DJWS (...)   0000-00-00 00:00:00
看起來比 magic labeling 還要複雜一點

Links booklink

Contact Us: admin [ a t ] ucptt.com