我有一個項目,它要求我將課程分發給學生。所有學生都要求提供一些課程,但他們只能獲得一些課程(這可能是他們要求的,不到的或只是0 ),所有課程都有配額,我需要找到完美匹配(所有配額是否滿員,學生是否獲得了他們所允許的配額)是否存在 - 如果存在匹配的輸出。我應該用什麼來實現C++中的加權二分匹配算法?
我剛剛獲得輸入並將其存儲在對象中。項目中存在時間限制,我不知道從哪裏開始。對於此項目的任何建議或方法?
我想我應該實現二部匹配算法。我是新的C++,所以我需要實現節點類和邊類嗎?或者我應該使用鄰接列表?哪一個運行速度更快?
例如,學生要求3,4和5課程,但他可以上2節課,所以如果有完美匹配的可能性,算法應該給出2個選擇。
我認爲雙方面的問題是這樣的,但我認爲這很難實現。 http://i.stack.imgur.com/wtJ6o.jpg
1.student wants 3 ,4 system allows him to take 2 lessons
2.student wants 1,2,3,4 system allows him to take 3 lessons
3.student wants 1,2,3,4 system allows him to take 2 lessons
4.student wants 1,3,5 system allows him to take 2 lessons
5.student wants 2,5 system allows him to take 1 lessons
1.lesson's quota = 2
2.lesson's quota = 1
3.lesson's quota = 2
4.lesson's quota = 3
5.lesson's quota = 2
I just wrote this ,this might not be the best example.
One possible solution is = 1 -> (3,4) 2->(1,2,4) 3->(3,4) 4->(1,5) 5->(5)
Another is = 1 -> (3,4) 2->(1,2,4) 3->(1,4) 4->(3,5) 5->(5)
可能有更多的,我不知道。
(學生 - >教訓)
我並沒有完全理解您的意思是運輸問題和運輸成本。請您稍微擴展一下您的答案?我爲我的問題添加了一個方案。謝謝。 – McOne
但是沒有學生要上課,他/她沒有要求。所以沒有成本,因爲我認爲1。所有運輸的課程已經被要求 – McOne
@McOne如果學生沒有要求一個特定的課程,因爲我們已經使運輸成本高(1),所以該選項不應存在於最佳解決方案中。但是,我有可能誤解了這個問題。請提供一個工作示例來澄清問題。 –