【问题标题】:Find all array permutations of splitting a string in C+++查找在 C++ 中拆分字符串的所有数组排列
【发布时间】:2021-03-29 19:22:52
【问题描述】:

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

data = "12479"

输出

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

我该怎么做?

【问题讨论】:

  • 这看起来像是一个家庭作业问题。要么将此作为通用算法问题提出,要么查看算法头文件以查看是否可以将任何功能纳入您的目的。如果您需要 C++ 方面的帮助,特别是,那么您应该更准确地回答您的问题。数据是 stl 字符串还是 char *,您希望结果是 int 的数组或向量还是字符串或 char *?
  • 到目前为止你的代码是什么?这个网站不是用来做人的功课的。做功课是学习必不可少的。
  • 您对基于此的非递归算法感兴趣吗?:stackoverflow.com/questions/65546565/… 想象每个蓝色气泡都是您数据的一个字符。

标签: c++ string split permutation


【解决方案1】:

递归算法很简单:

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 根据上下文对数组或字符串进行操作。

【讨论】:

    猜你喜欢
    • 2011-06-21
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 2015-06-18
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多