You need to enable JavaScript to run this app. 参与者最少组数分组方案设计及代码实现(每组限6-10人)
优惠活动
大模型
产品
解决方案
定价
更多

参与者最少组数分组方案设计及代码实现(每组限6-10人)

人数分组问题解决思路与实现

解决思路

  • 核心目标是优先保证总组数最少,因此首先以每组最多10人的上限计算最小可能的组数
  • 具体步骤如下:
    1. 合法性校验:若总人数X<6,无法满足每组最少6人的要求,直接返回无法分组
    2. 计算最小可能组数k:对X/10的结果向上取整,确保每组人数不超过10人的前提下组数最少
    3. 可行性校验:判断是否满足6*k ≤ X,若不满足说明该组数下无法达到每组最少6人的要求,同样无法完成分组
    4. 人数分配:若校验通过,先给所有组分派基础人数m = X // k,再将余下的r = X % k个名额分配给r个组,每个组加1人,最终得到r个m+1人的组、k-r个m人的组,所有组人数均在6~10区间内

示例验证:总人数81时,k=ceil(81/10)=9,6*9=54≤81,m=81//9=9,r=0,因此得到9个每组9人的分组,符合要求。

实现代码(Python)

import math

def split_groups(x):
    # 总人数合法性校验
    if x < 6:
        return "无法完成分组,总人数不能少于6人"
    # 计算最小可能的组数
    min_group = math.ceil(x / 10)
    # 校验该组数下是否满足最低人数要求
    if min_group * 6 > x:
        return "无法完成分组,无法同时满足每组人数6~10的要求"
    # 分配各小组人数
    base = x // min_group
    remainder = x % min_group
    group_list = []
    for _ in range(remainder):
        group_list.append(base + 1)
    for _ in range(min_group - remainder):
        group_list.append(base)
    return f"共分为{min_group}个小组,每组人数分别为:{group_list}"

# 示例测试
print(split_groups(81))
# 输出:共分为9个小组,每组人数分别为:[9, 9, 9, 9, 9, 9, 9, 9, 9]

内容的提问来源于stack exchange,提问作者Rachit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 14:54:05