我想枚举一个 n 元组。例如对于 n=2:
00 01 10 11
02 20 12 21 22
03 30 13 31 23 32 33
04 40 14 41 ...
n=3 会这样开始:
000 001 010 100 011 101 110 111
002 020 200 012 102 021 120 201 210 112 121 211 122 212 221 222
003 ...
具有相同元素的元组的顺序并不重要(例如 001 和 010),但具有更多(011 对 001)或更重要的更大(002 对 001)元素的元组应该总是在后面出现。
经过一番搜索,似乎有很多相关的算法,但没有一个专门针对这种情况。有这样的算法吗?
编辑: n=2 案例的图像。绿线表示通过打乱元组中元素的顺序到达的元素。
编辑:关于订单的说明:
- 元组主要按其最大元素排序 (152 > 444)
- 然后按它们的第二大元素排序 (053 > 252) 依此类推 (12341 > 12340)
- 具有相同元素的元组之间的顺序是任意的 (123 = 321)