Objective c 计算数组中可以包含的最大对象数
我的项目有一个非常高层次的概述,就是将x个学生分成y个班级,同时保持每个班级的学生人数大致相等 i、 e.如果有100名学生和5个班(x=100,y=5),每个班应该有20名学生。对于这种情况,我可以使用以下代码:Objective c 计算数组中可以包含的最大对象数,objective-c,arrays,max,equality,Objective C,Arrays,Max,Equality,我的项目有一个非常高层次的概述,就是将x个学生分成y个班级,同时保持每个班级的学生人数大致相等 i、 e.如果有100名学生和5个班(x=100,y=5),每个班应该有20名学生。对于这种情况,我可以使用以下代码: int maxNumberPerClass = x / y; 然而,当有97名学生和5个班级时,上述代码会出现一个问题。是的,每个班级的学生人数相同,但由于需要两个20号班级和三个19号班级,一些学生将不会被安排 对这个问题进行一个渐进的、有点骇人听闻的修复将产生四个20码的等级和
int maxNumberPerClass = x / y;
然而,当有97名学生和5个班级时,上述代码会出现一个问题。是的,每个班级的学生人数相同,但由于需要两个20号班级和三个19号班级,一些学生将不会被安排
对这个问题进行一个渐进的、有点骇人听闻的修复将产生四个20码的等级和一个17码的等级
int maxNumberPerClass = ceil(x / y);
此方法的问题是,最后一个类(数组中的最后一项)始终包含最少的学生数。如果这个班和其他班之间的偏差仅仅是一个学生,这不会是一个问题。但由于在这种情况下是两个,这将是不公平的
将X个学生分成Y个班级的最佳方法是什么?Y个班级的学生人数尽可能相等。如果不知道你在哪个班级工作,就无法做到这一点
int minNumberOfStudents = floor(x / y);
int maxNumberOfStudents = minNumberOfStudents + 1;
int numberOfClassesWithMaxStudents = x - (minNumberOfStudents * y);
int numberOfClassesWithMinStudents = y - numberOfClassesWithMaxStudents;
“增量”用途是计算“下一步”是什么;班级规模将分配给剩余学生,剩余班级:
int remainingStudents = 97;
int remainingClasses = 5;
int nextClass = nextClassSize(remainingStudents, remainingClasses);
其中nextClassSize(…)
类似于:
return (remainingStudents - 1 + remainingClasses) / remainingClasses;
将此输入感谢您的回复。我这样说是否正确:是的,您需要生成
MaxNumberOfClasses with MaxStudents
类的maxNumberOfStudents
和(y-NumberOfClasses with MaxStudents)`对于minNumberOfStudents
你的意思是我们不需要floor
,因为大多数语言都会自动为int/int设置floor?@sha我确信,将其指定给int只会截断floor的值,这对x/y都是一样的,所以不需要@rmaddy只需将x
和y
强制转换为浮点值就足够了,因为这将允许浮点除法?最后一个代码:@max_uuu)Nevermind。我不知道我在想什么。整数除法的结果与使用floor
相同,因此无论x
和y
的类型如何,发布的代码都可以正常工作。