我有一个函数可以生成具有固定数量的 1(其余为 0)的二进制序列。我需要一个函数,它接受一个序列并按字典顺序返回该序列的位置。例如,10 个长度为 5 和 3 个 1 的序列是
0 0 1 1 1
0 1 0 1 1
0 1 1 0 1
0 1 1 1 0
1 0 0 1 1
1 0 1 0 1
1 0 1 1 0
1 1 0 0 1
1 1 0 1 0
1 1 1 0 0
我需要一个函数,例如0 1 1 0 1
并返回3
,因为它是列表中的第三个。
我能想到的唯一一件效率太低的事情是生成所有序列(简单),存储它们(占用太多空间),然后在列表中搜索给定序列(太慢),然后返回它的位置。有没有更快的方法来做到这一点?一些我看不到的简单技巧?