2009-08-22 7 views
6

n 항목이 있으며 각 사용자는 또는 의 값을 가질 수 있습니다. 즉, 2^n 개의 항목 조합이 가능합니다. 항목 수는 에서 까지 다양 할 수 있습니다.모든 가능한 조합을 만드는 효율적인 알고리즘은 무엇입니까?

수천 개의 IF를 사용하지 않고 가능한 조합을 숫자 시퀀스 (, 즉, n = 2 : 00, 01, 10, 11)로 어떻게 만들 수 있습니까?

+2

다음 답변을 보았습니까? http://stackoverflow.com/questions/127704/algorithm-to-return-all-combinations-of-k-elements-from-n – Shog9

답변

15

숫자 0..2^n-1을 이진 형식으로 인쇄하면됩니다.

+0

감사합니다. . 때로는 대답은 코 앞에 있지만 아직 보지 못합니다. – Hans

1

수학 조합의 m 번째 사전 적 요소 생성. . LINK

그리고 당신은 DON KNUTH하여이를 참조해야한다. (가능한 모든 조합을 생성 참고 : C# 코드도 제공됩니다.)

0

각 항목에 사용할 수있는 값은 0 또는 될 수있는 경우 1, 그리고 당신은 단지 0과 1 조합을 원합니다. 왜 자연 정수 (바이너리 형태로)를 2^(n-1)까지 사용할 수 있습니까? 0 '문자열을 원한다면 패딩 ...

3

this answer에서 올려 진 변환

n = 5 
for x in range(2**n): 
    print ''.join(str((x>>i)&1) for i in xrange(n-1,-1,-1)) 

미친 진수 : 단지의 int를 사용합니다.

출력 :

00000 
00001 
00010 
00011 
00100 
00101 
00110 
00111 
01000 
01001 
01010 
01011 
01100 
01101 
01110 
01111 
10000 
10001 
10010 
10011 
10100 
10101 
10110 
10111 
11000 
11001 
11010 
11011 
11100 
11101 
11110 
11111 
+0

슬프게도 나는 약간의 파이썬을 이해하지 못한다. 주로 자바를 사용한다. 그러나 나는 그것을 한 번 시도하려고 노력할 것이다. 감사. – Hans

0

또는 사용 itertools : 항목이 경우 4 개 요소 튜플이라고

import itertools 

for item in itertools.product((1, 0), repeat=4): 
    print item 

참고.