2016-11-24 2 views
0

Я работаю над проектом школьного программирования, и мне нужно назначить каждого студента группе, чтобы все группы имеют примерно такое же количество мальчиков, как девочки.Как разделить число студентов на разные группы таким образом, чтобы они содержали примерно одинаковое количество мальчиков и девочек

Кроме того, старые ученики сохраняют одну и ту же группу, поэтому изначально у меня есть две группы (A и B) с некоторыми уже назначенными учениками и список для назначения группы. В каждой группе допускается максимальное количество студентов.

Например:

-чисел студентов, ранее присвоенных:

  Group A      Group B 
     --------------    --------------- 
     Boys  6     Boys  12 
     Girls  9     Girls  8 
     --------------    --------------- 
     Total  15    Total  20 

-чисел студентов для назначения:

 --------------    --------------- 
     Boys  8     Girls  4 
     --------------    --------------- 

-Максимальный количество студентов в группе:

 ------------------------------------------ 
        25 students per group 
     ------------------------------------------ 

-решением быть получено:

  Group A      Group B 
     --------------    --------------- 
     Boys  13     Boys  13 
     Girls  11     Girls 10 
     --------------    --------------- 
     Total  24    Total  23 

-The процесс я следовал, чтобы достичь этого решения заключается в следующем:

1. I have calculated the total number of boys and girls: 

    Total Boys: 6 + 12 + 8 = 26 
    Total Girls: 9 + 8 + 4 = 21 

2. I have calculated half of both amounts: 

    Total Boys: 26/2 = 13 
    Total Girls: 21/2 = 10 (10.5) 

3. I have calculated the difference between the students assigned and the 
    students remaining to be assigned until the amount obtained previously: 

      Group A      Group B 
     --------------    --------------- 
     Boys 13-6= 7    Boys 13-12= 1 
     Girls 10-9= 1    Girls 10-8= 2 
     --------------    --------------- 


4. I have assigned the necessary amount of the students in each group: 

      Group A      Group B 
     --------------    --------------- 
     Boys 6+7= 13    Boys 12+1= 13 
     Girls 9+1= 10    Girls 8+2= 10 
     --------------    --------------- 
     Total  23    Total  23 

5. And finally the one that I have left I have added it to the first 
    group: 

      Group A      Group B 
     --------------    --------------- 
     Boys 13     Boys 13 
     Girls 10+1=11    Girls 10 
     --------------    --------------- 
     Total  24    Total  23 

Мне нужно знать, как сделать назначение быть справедливо для любого числа ранее назначенных студентов. Мне также нужно сделать тот же процесс с тремя группами (A, B и C).

Заранее благодарен

+1

Бьюсь об заклад, ваша проблема может быть полиномиально уменьшена до [рюкзака] (https://en.wikipedia.org/wiki/Knapsack_problem) или [подмножества] (https://en.wikipedia.org/wiki/Subset_sum_problem) проблема. – Jan

ответ

1

Решение, предлагаемое вами, является хорошим. Просто помните, чтобы разделить количество студентов по количеству групп в step #2. Этого должно быть достаточно, чтобы ваше решение было гибким.

+0

Здравствуйте, @slawekpl, в первую очередь спасибо за ответ. Почему мне нужно разделить количество студентов по количеству групп? Раньше у меня было максимальное количество учеников на группу, и никогда не бывает так, что изначально больше студентов, чем разрешено, так как этот тест выполняется до достижения этого шага. В этом случае будет максимум 50 студентов (25 студентов в группе), и, как вы можете видеть, у меня всего 47 человек. Если я не прав, скажите мне, так как я немного смущен. – Joseph

Смежные вопросы