我的意思是一个函数,它接受元素数组和组合作为参数,并返回一个表示组合索引的数字,而不会生成每个组合。
我没有偏好,可以使用任何编程语言。
代码getCombinationIndex("114")
的示例,应返回组合114的索引。
[1,1,1]: 1
[2,1,1]: 2
[3,1,1]: 3
[4,1,1]: 4
[.....]
[1,1,4]: ?
答案 0 :(得分:1)
假设您正在考虑来自字母k
的{{1}}个符号的组合(即,按A = {a_0, a_1, ..., a_n}
的顺序按字母顺序排列,n
个符号和a_i < a_j
个符号)。在您的示例中,您有一个由4个符号i < j
和A = {1, 2, 3, 4}
个符号组成的字母。
然后,组合 k = 3
可以唯一编码为c = [a_i1, a_i2, ..., a_ik]
。您要查找的索引是I(c) = i1 + n*i2 + (n^2)*i3 + ... + (n^(k-1))*ik
。
让我们看看它在您的示例中如何工作:
F(c) = I(c) + 1
答案 1 :(得分:1)
此问题可以看作是基本转换。首先,您需要两个信息,然后这只是一个基本转换。
[4,1,1] -> 4
这仅适用于所有项目可以具有相同最大值的前提。
算法
示例