【发布时间】:2013-09-15 01:26:27
【问题描述】:
我有一个函数可以生成具有固定数量 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,因为它是列表中的第三个。
我能想到的唯一一件效率太低的事情是生成所有序列(简单),存储它们(占用太多空间),然后在列表中搜索给定序列(太慢) ,并返回其位置。有没有更快的方法来做到这一点?一些我看不到的简单技巧?
【问题讨论】: