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