我正在編寫一個程序,以形成輔導組,給予學生和導師的可用性。可用性以字母表示的阻塞時間列表給出。例如,如果一個學生的可用性爲[A,C,D],則他在一天的第一,第三和第四小時內可用。你如何製作一個能夠列出學生名單和輔導員名單的函數,並給出一組最大限度地增加一組學生人數的小組列表?我在Java中工作,但我比算法本身更關心算法。一些更多細節:特定分組算法
團體必須包含3-6名學生和1個導師。
學生只能在一個組中。
學生滿意的數量(放置在一個組中)必須最大化。 例如,假設我們有1-6名學生和兩位導師,這兩位導師都可以在時間A和B上學習。學生可以在1:A,2:A,3:A,4:AB,5:AB,6 :B中。該算法應返回兩組:[1,2,3,tutor1]和[4,5,6,tutor2]。這將每個學生都分配給某個組,並且最好是說,將1-5放入一個組中並將6放出。
「我想要一個函數[...]」好了,好了,但天下沒有免費的幫助:你嘗試過什麼?現有的代碼是什麼? etc等 – fge
http://en.wikipedia.org/wiki/Job_shop_scheduling –
它有助於如果你問一個具體的問題。 「你怎麼 ... ?」比「我想......」要好得多。 – hatchet