[問題] 排隊問題

看板Prob_Solve作者 (XD)時間10年前 (2013/12/28 19:08), 8年前編輯推噓2(202)
留言4則, 4人參與, 最新討論串1/1
有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)

12/28 23:18, , 1F
剛才以為每家店的 1 號要同時進去,結果發現無解 xD
12/28 23:18, 1F
再解釋的詳細一點 ※ 編輯: snes6303st 來自: 1.171.179.234 (12/28 23:49)

12/29 00:40, , 2F
每人順序和 = 3(N+1)/2 , N要奇數才可能有解...
12/29 00:40, 2F

12/29 00:45, , 3F
那麼偶數應該要求各人之間 和的變異最小
12/29 00:45, 3F

12/29 09:24, , 4F
看起來比 magic labeling 還要複雜一點
12/29 09:24, 4F
※ 編輯: 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
文章代碼(AID): #1Ilh4qcs (Prob_Solve)