對我的項目進行全面高度概述的是將x個學生分成y個班級,同時保持每個班級的學生數量大致相等。計算可以在數組中的對象的最大數量
即如果有100名學生和5個班級(x = 100,y = 5),則每班應該有20名學生。對於這種情況,我可以使用下面的代碼:
int maxNumberPerClass = x/y;
然而,當有97名學生和5班,一個問題與上面的代碼出現。是的,每個班級的學生人數都是相同的,但是有些學生不會被安置,因爲需要兩個大小爲20的班級和三個大小爲19的班級。
一個增量式的,這個問題將產生四個類尺寸20的一個階級大小17.
int maxNumberPerClass = ceil(x/y);
這種方法的問題是,最後的等級(在陣列中的最後一項)將始終包含學生數最少的。如果這個班級和其他班級之間的偏差只是一個學生,這不會成爲問題。但在這種情況下,這是兩個,這將是不公平的。
將X學生分成Y類的最佳方式是什麼?
感謝您的答覆
把這個。我是否正確地說我會按以下方式使用你的方法:https://gist.github.com/MaxKramer/c9efd21eaff64ab0982a – 2014-12-13 16:37:10
是的,你需要用'maxNumberOfStudents'和(y- numberOfClassesWithMaxStudents)'''minNumberOfStudents'' – sha 2014-12-13 16:39:42
你的意思是我們不需要'floor',因爲大多數語言會自動爲int/int做? – sha 2014-12-13 16:48:25