【问题标题】:What will be the function or loop structure of 50 students groups. So that they never face off when assigning them in different groups. How to solve? [closed]50 个学生小组的功能或循环结构是什么。这样他们在将他们分配到不同的组时就不会面对。怎么解决? [关闭]
【发布时间】:2023-03-22 23:30:01
【问题描述】:

我的目标是创建 4 个会话。每个会话有 20 分钟的时间。我需要安排50名学生分组。每个小组最多有 3 名成员。并在 80 分钟内创建四次。这样每次每个学生都会与不同的学生分组分配。没有人会再次面对。

【问题讨论】:

  • 您忘记添加代码。
  • 我正在考虑解决方案。我没有任何代码。我只想要一个清晰的概念,以便我可以开始使用它。 @quamrana
  • 我认为指定的 20 分钟无关紧要?您只需将 50 名学生分成最多 3 组,四次,同一组中不会重复任何人
  • 创建一个Student 类来代表每个学生,并为每个学生分配一个set。当您向学生组填充时,您可以通过检查他们的集合来检查该组的候选人是否已经与其他学生在一起。将候选人添加到小组后,您可以将所有其他学生添加到他们的集合中,以便在下一次会话中记住他们不能与这些学生一起进入另一个小组。
  • 提示:解决 8 名学生的问题,然后将该解决方案扩展到 48 名学生,并按照规范要求分配剩余的两名学生

标签: algorithm data-structures combinations permutation


【解决方案1】:

你的小组比解决这个问题所需的多得多,所以有很多简单的方法可以工作。

一种方式:

  1. 将学生分成 2 人或 3 人一组。
  2. 在每个组中,分配数字:一名学生为 1 号,一名为 2 号,如果有第三名,一名为 3 号。
  3. 将各组排成一圈。每节课结束时,数字 1 留在原地,数字 2 顺时针移动一组,数字 3 顺时针移动两组。

证明这满足您的条件相当容易。对于每个学生:

  • 与他分组的每个学生都有不同的数字 - 每个组总是有一个 1、一个 2,也许还有一个 3
  • 一旦他与另一名学生分组,该学生将在每节课结束时将 1 或 2 组移得更远。
  • 有 17 个小组,因此在每节课 1 或 2 个步骤中,学生需要 17 节课才能再次见到他的小组成员。

这种策略在很多情况下都很有效。如果你有一个质数的小组,每组的小组比学生多,小组比会话多,那么没有两个学生会见面两次。

【讨论】:

  • 非常感谢。终于搞定了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-04
  • 2012-11-22
  • 2018-03-28
  • 1970-01-01
  • 2010-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多