You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何增量生成由[0,1,2,3,4,5]构成的无重复数字组合

实现方案

你要生成的本质是指定数字集合中长度从1到集合大小的所有无重复元素排列,可以用两种通用方案实现,都不需要硬编码嵌套层数,能直接适配任意长度的输入数字集合。


方案1:用Python标准库实现(最简写法)

直接调用itertools.permutations生成指定长度的全排列即可:

import itertools

keys = [0, 1, 2, 3, 4, 5]
# 遍历所有需要生成的长度:1到6
for length in range(1, len(keys)+1):
    # 生成当前长度的所有无重复排列
    for perm in itertools.permutations(keys, length):
        # 把排列元组转成连续字符串输出
        print(''.join(map(str, perm)))

方案2:手写回溯实现(无第三方依赖,可灵活定制)

如果需要自己控制生成逻辑,可以用回溯算法实现,一次遍历就能生成所有长度的结果:

keys = [0, 1, 2, 3, 4, 5]
used = [False] * len(keys)

def backtrack(current_str):
    # 只要当前字符串非空,就符合输出要求
    if current_str:
        print(current_str)
    # 已经选完所有元素就终止
    if len(current_str) == len(keys):
        return
    # 遍历所有可选的数字
    for i in range(len(keys)):
        if not used[i]:
            used[i] = True
            backtrack(current_str + str(keys[i]))
            used[i] = False

# 从空串开始回溯
backtrack("")

两种方案输出结果完全一致,都覆盖了你示例中所有1位到6位的无重复排列,输入数字集合变更时只需要修改keys的定义即可,不需要调整循环逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:39:03