我对如何将一组序列映射到连续整数感到困惑。
所有的序列都遵循这个规则:
A_0 = 1
A_n >= 1
A_n <= max(A_0 .. A_n-1) + 1
我正在寻找一种解决方案,它能够在给定这样的序列的情况下计算一个整数以查找表并给定表中的索引,生成序列。
示例:对于长度 3,有 5 个有效序列。执行以下地图(最好是双向)的快速功能将是一个很好的解决方案
1,1,1 0
1,1,2 1
1,2,1 2
1,2,2 3
1,2,3 4
- 练习的重点是获得一个在有效序列和单元格之间具有 1-1 映射的打包表。
- 集合的大小仅受可能的唯一序列数的限制。
- 我现在不知道序列的长度是多少,但它会是一个很小的,<12,预先知道的常数。
- 我迟早会谈到这个,但我会把它扔掉,让社区在此期间获得“乐趣”。
这些是不同的有效序列
1,1,2,3,2,1,4
1,1,2,3,1,2,4
1,2,3,4,5,6,7
1,1,1,1,2,3,2
这些不是
1,2,2,4
2,
1,1,2,3,5
与此相关