n-bit
단어의 이진 비트 패턴 수가 임의의 한도 인 2^n
보다 적은 알고리즘을 찾고 있습니다. 또한 모든 1-bit
조합, 2-bit
조합 등의 수를 생성하고 싶습니다. 제한이 2^n
인 경우 분명히 2^n
조합 (C(n,1) 1-bit combinations plus C(n,2) 2-bit plus C(n,3) 3-bit and so on)
이됩니다. 그러나 제한이 부과 된 경우, 가능한 모든 조합이 유효하지는 않습니다 (부과 된 한도 미만). 예 : n=4
. 16 가지 가능한 비트 패턴이 있는데 그 중 15 비트는 1 개 이상 1-bits
을 포함합니다. 한도가 10 인 경우 10보다 큰 패턴은 계산에 포함되지 않습니다. 따라서 단일 비트 패턴의 경우 올바른 비트 패턴은 0001
, 0010
, 0100
및 1000
입니다. 2 비트 패턴은 0011
, 0101
, 0110
, 1001
이 될 것입니다. 패턴 1010
및 1100
은 10을 초과하기 때문에 계산되지 않습니다. 유일한 3 비트 비트는 0111
이고 유일한 4 비트 패턴 인 1111
은 한계를 초과합니다.이진 비트 패턴 조합 계산
F
내 계산 함수 인 경우, F(4,10,1)
4를 반환, C(4,2)
6. n
의 실제 값이 커질 수 있으므로 미만 10 F(4,10,2)
4 반환되어 1 비트의 4-bit
패턴의 수 (40 또는 비트), 가능한 패턴을 열거하고, 한계에 대해 테스트하고, 유효한 패턴을 계산하는 것은 비현실적입니다.
이것이 어떻게 효율적으로 수행 될 수 있는지에 대한 아이디어가 있습니까?
우수 아이디어; 그 OP는 그의 질문을 아주 잘 표현한다. 그래서 나는 그에게서 좋은 제안을 기대한다! –