我有以下問題: 我有N名工人。它們中的每一個都可以分配給4個任務T1,T2,T3和T4之一。我想生成一個列表,其中包含所有這樣的分配功能:如何獲得所有可能的工作分配清單?
W1->T1, W2->T1, ... Wx->T1
W1->T1, W2->T1, ... Wx->T2
W1->T1, W2->T2, ... Wx->T2
...
W1->T4, W2->T4, ... Wx->T4
我該怎麼做? Python或VB.NET代碼將是最好的,但任何語言都可以。
我有以下問題: 我有N名工人。它們中的每一個都可以分配給4個任務T1,T2,T3和T4之一。我想生成一個列表,其中包含所有這樣的分配功能:如何獲得所有可能的工作分配清單?
W1->T1, W2->T1, ... Wx->T1
W1->T1, W2->T1, ... Wx->T2
W1->T1, W2->T2, ... Wx->T2
...
W1->T4, W2->T4, ... Wx->T4
我該怎麼做? Python或VB.NET代碼將是最好的,但任何語言都可以。
你可以這樣做:
import itertools
def show_assignments(workers, tasks):
prod = itertools.product(*[range(tasks)]*workers)
for a in prod:
print(", ".join("W%d->T%d" % (w+1, t+1) for (w, t) in enumerate(a)))
你可以調用它,例如,如:
show_assignments(5, 4)
這將顯示結果爲:
W1->T1, W2->T1, W3->T1, W4->T1, W5->T1
W1->T1, W2->T1, W3->T1, W4->T1, W5->T2
...
W1->T4, W2->T4, W3->T4, W4->T4, W5->T3
W1->T4, W2->T4, W3->T4, W4->T4, W5->T4
它似乎可用,我喜歡它,但我不知道我是否理解正確。你能給我一個例子,我有6個工人和4個任務,所以我能理解什麼是什麼? –
好吧,我更新它來產生你正在尋找的特定結果。我給出的例子有5個工人和4個任務。 –
我想這就是你要找的。如果您有任何問題,請告訴我。 –
可以使代碼更好。但是,對於一個例子,這將工作(蟒蛇3.6)
workers = ["W1","W2","W3","W4","W5"] #workers
tasks = ["T1","T2","T3","T4"] #tasks
for worker in workers:
for task in tasks:
print(worker + " >> " + task)
如果我理解正確,它會生成類似於所有工作分配的清單,但不包括工作分配與其他工作分配的組合。我對嗎?如果是的話,那麼這不是我正在尋找的答案。 –
根據文檔:產品('ABCD','xy') - > Ax Ay Bx By Cx Cy Dx Dy。我需要一個所有組合的分配清單,不僅包括任何工作人員的任何分配清單。它不會產生我需要的輸出。 –
歡迎來到Stack Overflow。請閱讀https://stackoverflow.com/help/how-to-ask和https://stackoverflow.com/help/mcve。您可以在您嘗試自行解決問題時立即回來,如果您的*實施*有特定問題,我們將很樂意爲您提供幫助。 –
@NiallCosgrove SO具有常用鏈接Ask,Tour,MCVE和Help的捷徑。只需將它們放在方括號中['+'Tour' +']' – Plutonix
@Plutonix嘿,謝謝你。會回頭看看諷刺之下的幫助;) –