Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 计算数组中可以包含的最大对象数_Objective C_Arrays_Max_Equality - Fatal编程技术网

Objective c 计算数组中可以包含的最大对象数

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码的等级和

我的项目有一个非常高层次的概述,就是将x个学生分成y个班级,同时保持每个班级的学生人数大致相等

i、 e.如果有100名学生和5个班(x=100,y=5),每个班应该有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
的类型如何,发布的代码都可以正常工作。