在C++中查找拆分字符串的所有数组排列

Find all array permutations of splitting a string in C+++

我有一串数字,我想拆分成所有可能的组合(字母顺序必须保持固定),因此:

data = "12479"

输出

combs = [[1, 2479], [1, 2, 479], [1, 24, 79] ...etc]

我该怎么做?

递归算法很简单:

combinations(data)
  if size(data) == 0 return []
  if size(data) == 1 return [ data ]
  return
     [ head(data) ] + combinations(tail(data)) +
     [ head(data) + head(combinations(tail(data))) + tail(combinations(tail(data)))

前两个 return 语句是基本情况。第三个 return 语句要么拆分第一个元素,要么不拆分。请注意,+、head 或 tail 根据上下文对数组或字符串进行操作。