序列计算算法

标签 algorithm permutation

我正在寻找可以帮助我计算序列的算法或伪代码的提示。 这是一种排列,但不完全是因为它不是固定长度。 输出序列应如下所示:

A
B
C
D
AA
BA
CA
DA
AB
BB
CB
DB
AC
BC
CC
DC
AD
BD
CD
DD
AAA
BAA
CAA
DAA
...

上面的每个字符实际上代表一个整数,它从最小值递增到最大值。 开始的时候不知道深度,所以仅仅使用多个嵌套的for循环是行不通的。

在德国已经很晚了,我实在无法理解这个问题。很确定它可以用 for 循环和递归来完成,但我目前不知道如何开始。

有什么想法吗?

编辑:B 错字更正。

最佳答案

看起来您正在采用长度为 1、2、3 等的四个不同数字的所有组合,允许重复。

所以从长度 1 开始:{ A, B, C, D }

要获得长度 2,将 A、B、C、D 依次添加到长度为 1 的每个成员之前。(16 个元素)

要获得长度 3,将 A、B、C、D 依次添加到长度为 2 的每个成员之前。(64 个元素)

要获得长度 4,将 A、B、C、D 依次添加到长度为 3 的每个成员之前。(256 个元素)

等等。

如果您有更多或更少的数字,同样的方法也适用。如果您允许 A 等于 B,这会变得有点棘手,但这看起来不像您现在正在做的事情。

关于序列计算算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12433252/

相关文章:

algorithm - 图中的 K 个互斥路径

python - 恢复向量的排列

python - pandas 系列及其所有元素的排列 (itertools)

algorithm - 二维圆矩形碰撞和反射不起作用

algorithm - 为什么 Merge Sort 的 Merge() 函数有条件第二个循环?

c# - 使用通配符生成单词的所有排列

python - 从排列中清理元组列表

java - 获取数学表达式的每个排列

algorithm - 给定一组字符串和一组子字符串作为不同的数组。如何从每个数组中找到正确的匹配项?

根据给定的边集确定树与否的算法