看板 Prob_Solve 關於我們 聯絡資訊
有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)
Favonia:剛才以為每家店的 1 號要同時進去,結果發現無解 xD 12/28 23:18
再解釋的詳細一點 ※ 編輯: snes6303st 來自: 1.171.179.234 (12/28 23:49)
CaptainH:每人順序和 = 3(N+1)/2 , N要奇數才可能有解... 12/29 00:40
snes6303st:那麼偶數應該要求各人之間 和的變異最小 12/29 00:45
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