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

Go语言实现可变行数二维数组元素全组合生成方案求助

Go语言实现可变行数二维数组的元素全组合生成

给定如下二维字符串数组:

matrix = [
  ['A', 'B', 'C'],
  ['D'],
  ['E', 'F'],
  ['G', 'H']
]

需要从每行中选取一个元素,生成所有有序组合,输出格式示例如下:

ADEG,
ADEH,
ADFG,
ADFH,
BDEG,
BDFG
...
CDFG
CDFH

要求遍历所有可能的组合,且数组的行数、每行的元素个数都可以动态变化。如果是固定行数,可以用多层嵌套循环实现,但行数未知时,递归是更合适的方案。

在Python中这类需求通常可以直接借助内置的itertools.product函数实现,但Go语言没有类似的内置工具,需要自行实现。

下面是转换而来的Go语言递归实现代码,也可供其他非Python开发者参考:

var combinations = []string{}

// combine 从每行选取元素,拼接生成所有组合
func combine(terms [][]string, accum string) {
    last := len(terms) == 1
    n := len(terms[0])
    for i := 0; i < n; i++ {
        item := accum + terms[0][i]
        if last {
            combinations = append(combinations, item)
        } else {
            combine(terms[1:], item)
        }
    }
}

代码说明

  • 全局变量combinations用于存储最终生成的所有组合结果
  • 递归函数combine接收两个参数:剩余待处理的二维数组terms,以及当前已拼接的字符串accum
  • 每次处理二维数组的第一行,遍历该行的所有元素,将元素拼接到accum上
  • 如果是最后一行,就把拼接好的字符串加入结果数组;否则递归处理剩余的行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 01:30:10