列表全排列
把列表的每一行当成一个元素,列出它们的全部排列(考虑顺序):默认排全部 n 项,也可以只排前 r 项(P(n,r));为防排列爆炸,输入最多 12 项、结果最多 20000 条,任一超过直接报错。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
列表(每行一项,最多 12 项)
排列结果
一行一种排列,最多 20000 行。
输入列表后即可列出全部排列
输入项数: 0 · 排列数: 0 · 每行项数: 0 · 结果上限: 0
这个工具能做什么
- 排顺序:把若干任务列出所有先后顺序,人工挑出可行的那几种。
- 穷举验证:对少量输入列出全部排列,用来对照算法输出。
- 座位与轮值安排:小规模名单把所有座次排法列出来,再按约束筛掉不合适的。
示例
输入
苹果 香蕉 樱桃
输出
苹果香蕉樱桃 苹果樱桃香蕉 香蕉苹果樱桃 香蕉樱桃苹果 樱桃苹果香蕉 樱桃香蕉苹果
3 项共有 3! = 6 种排列,按字典序(先固定第一个位置)依次列出。
常见问题
最多能算多少排列?
输入最多 12 项、结果最多 20000 条,任一超过都会报错 `input-too-large`。排列数是 n!:8 项就有 40320 种,已经超过上限;12 项的全部排列有 4.79 亿种,所以必须拦住。
「取几项排列」怎么用?
填 0(默认)表示排列全部 n 项,共 n! 种;填 r 表示只排前 r 个位置,共 P(n,r) = n!/(n−r)! 种,例如 5 项取 2 项是 20 种。r 大于项数或为负数都会报错。
为什么有的行看起来重复?
只有输入里存在完全相同的行时才会这样——排列按位置枚举,不按内容去重。勾选「先去重」可以先压掉重复行,再排列。
输出顺序是随机的吗?
不是。结果按字典序生成:第一个位置先取输入第 1 项,再递归后面的位置,所以同样的输入永远得到同样的顺序。
关键词:列表全排列全排列permutationP(n,r)排列枚举所有排列顺序打乱顺序