跳到主内容
UniKit

列表项全组合

把列表的每一行当成一个元素,列出它们的所有组合(不考虑顺序):可以只取固定长度,也可以从 1 项一直列到全部;为防组合爆炸,输入最多 12 项、结果最多 20000 条,任一超过直接报错。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

列表(每行一项,最多 12 项)

组合结果

一行一组,最多 20000 行。

输入列表后即可列出全部组合

输入项数: 0 · 组合数: 0 · 最大长度: 0 · 结果上限: 0

这个工具能做什么

  • 两两配对:把名单里的成员列出所有二人组合,用来排值班、抽对手或安排访谈。
  • 测试组合覆盖:从若干选项里列出所有搭配,检查哪些组合还没有被验证过。
  • 选品搭配:把商品两两组合,快速过一遍可能的套餐方案。

示例

输入

苹果
香蕉
樱桃

输出

苹果,香蕉
苹果,樱桃
香蕉,樱桃

3 项取 2 项共 3 组组合,顺序不计:苹果+香蕉、苹果+樱桃、香蕉+樱桃。

常见问题

最多能算多少组合?

输入最多 12 项、结果最多 20000 条,任一超过都会报错 `input-too-large`。组合数是 C(n,r) 级别:12 项取 6 项已有 924 组,全部长度加起来 4095 组;而 20 项的全部组合上百万组,浏览器里算不完,所以直接拦住。

组合和排列有什么区别?

组合不看顺序,a,b 与 b,a 算同一组;排列看顺序,两者算两种结果。需要区分顺序请用「列表全排列」工具。

「每组取几项」填 0 是什么意思?

表示从 1 项一直列到全部 n 项,输出先短后长、同长度内按输入顺序。填具体数字(例如 2)就只输出该长度的组合。

结果条数超过上限怎么办?

把「结果上限」调小不会截断结果——上限是用来拦爆炸的,超过就报错而不是悄悄给一半。可以先减少输入项数,或把列表拆成几批分别计算。

关键词:列表全组合组合combinationC(n,r)组合枚举所有组合排列组合子集

同类工具