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

如何生成n个数组的唯一组合?树/图路径算法咨询

多数组元素全组合生成方案

你要解决的是多个数组的笛卡尔积问题——也就是从每个数组中各取一个元素,生成所有可能的唯一组合(对应你说的“路径”),这确实可以用树的遍历思路实现,下面给你几个实用的实现方案:

示例翻译

示例1

arr1 = [0, 6, 3, 10]
arr2 = [75, 10]
arr3 = [99, 50]
arr4 = [10]

生成的所有组合(路径):

0 75 99 10
0 75 50 10
0 10 99 10
0 10 50 10

对应的树结构:

0
     75        10
  99   50    99   50
10     10  10     10

示例2

arr1 = [0, 6, 3, 10]
arr2 = [75, 10]
arr3 = [99, 50]
arr4 = [10, 30, 60, 50]

生成的部分组合(路径):

0 75 99 10
0 75 99 30
0 75 99 60
0 75 99 50
0 75 50 10
0 75 50 30
0 75 50 60
0 75 50 50
0 10 99 10
...

对应的树结构:

0
     75        10
  99   50    99   50
10 30 60 50 10 30 60 50

可行实现方案

1. 递归法(深度优先遍历DFS)

从第一个数组开始,遍历每个元素,递归拼接后续数组的所有组合,直到处理完所有数组:

def cartesian_product(arrays):
    # 基准情况:只剩一个数组,返回单元素列表的集合
    if len(arrays) == 1:
        return [[x] for x in arrays[0]]
    # 递归处理剩余数组
    rest_combinations = cartesian_product(arrays[1:])
    # 拼接当前数组元素与后续组合
    result = []
    for num in arrays[0]:
        for combo in rest_combinations:
            result.append([num] + combo)
    return result

# 测试示例1
arrays = [[0,6,3,10], [75,10], [99,50], [10]]
for combo in cartesian_product(arrays):
    print(' '.join(map(str, combo)))

2. 迭代法(广度优先遍历BFS)

用列表逐步构建组合,初始为空列表,依次将现有组合与当前数组的每个元素拼接:

def cartesian_product_iterative(arrays):
    result = [[]]
    for arr in arrays:
        temp = []
        for existing_combo in result:
            for num in arr:
                temp.append(existing_combo + [num])
        result = temp
    return result

# 测试示例2
arrays = [[0,6,3,10], [75,10], [99,50], [10,30,60,50]]
for combo in cartesian_product_iterative(arrays):
    print(' '.join(map(str, combo)))

3. 内置工具简化实现(Python)

Python的itertools.product直接封装了笛卡尔积逻辑,是最简洁的实现方式:

import itertools

arrays = [[0,6,3,10], [75,10], [99,50], [10]]
for combo in itertools.product(*arrays):
    print(' '.join(map(str, combo)))

注意事项

  • 组合总数是所有数组长度的乘积,若数组数量多、元素多,要注意内存占用,必要时分批处理避免溢出。
  • 若需要去重(不同路径出现完全相同的元素组合),可将组合转为元组存入集合,再转回列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 03:20:00