我有一个由n个元素组成的数组,每个元素有2个可能的值:x或o。可能的组合是有序的,如果例如n = 3,它们将排列(水平),如下所示:
o|x|o|o|x|x|o|x
o|o|x|o|x|o|x|x
o|o|o|x|o|x|x|x
(第一栏:全部o,最后一栏:全部x)。 对于n = 4,组合将按如下顺序排序:
o|x|o|o|o|x|x|x|o|o|o|x|x|x|o|x
o|o|x|o|o|x|o|o|x|x|o|x|x|o|x|x
o|o|o|x|o|o|x|o|x|o|x|x|o|x|x|x
o|o|o|o|x|o|o|x|o|x|x|o|x|x|x|x
对于n = 5:
o|x|o|o|o|o|x|x|x|x|o|o|o|o|o|x|o|x|x|x|x|x|o|o|o|o|x|x|x|x|o|x
o|o|x|o|o|o|x|o|o|o|x|x|x|o|o|x|o|x|x|o|o|o|x|x|x|o|x|x|x|o|x|x
o|o|o|x|o|o|o|x|o|o|x|o|o|x|x|x|o|o|o|x|x|o|x|x|o|x|x|x|o|x|x|x
o|o|o|o|x|o|o|o|x|o|o|x|o|x|o|o|x|x|o|x|o|x|x|o|x|x|x|o|x|x|x|x
o|o|o|o|o|x|o|o|o|x|o|o|x|o|x|o|x|o|x|o|x|x|o|x|x|x|o|x|x|x|x|x
等等。 我现在想要一个阵列,知道它在序列中的位置。即,如果我有x | o | x | o,我想有一个公式告诉我“它在第7位”。当然,一旦我输入了数组,我知道n,也就是可能组合的最大长度(2 ^ n)。
我尝试为“x”分配一个值,以便尊重组合序列,并且每个组合都有一个唯一值(“x”的总和)。为此,我为矩阵的每一行分配了一个递增值(1,2,2.5,2.75,2.875,2.9375等)。关键在于,以这种方式计算的列的值不会在它们之间按比例分配,在具有不同n的系列中甚至更少。似乎唯一有用的东西(在n = 5之后误差增加)是某个数组与所有x之间的比率(对于相同的n)。
有任何建议或想法吗?