인터넷에서 프로그래밍 문제에 대한 답변을하고 있었으므로이 문제에 관심이 있습니다. 문자열의비트 마스크를 사용하여 순열 생성
이 코드를 인쇄 모든 순열을 사전 식 : 문제는 다음과 같이 정의된다. 뭔가 잘못되었습니다. 한 줄을 수정하거나 추가하여 찾아서 수정하십시오!
입력 :
입력 사이의 공백없이 소문자의 문자열을 포함하는 단일 선으로 구성. 길이는 최대 7 자이며 문자는 사전 식으로 정렬됩니다.
출력 :
전적으로 나열된 각 줄에 하나를 인쇄 문자열의 모든 순열.
def permutations():
global running
global characters
global bitmask
if len(running) == len(characters):
print(''.join(running))
else:
for i in xrange(len(characters)):
if ((bitmask>>i)&1) == 0:
bitmask |= 1<<i
running.append(characters[i])
permutations()
running.pop()
raw = raw_input()
characters = list(raw)
running = []
bitmask = 0
permutations()
누군가 내게 답변하고 어떻게 작동하는지 설명 할 수 있습니까? 나는 비트 마스킹의 응용에 정말로 익숙하지 않다. 고맙습니다.
당신은 줄을 추가하여 비트 마스크 비트 0을 다시해야
응답 해 주셔서 감사합니다. 그러나, 나는 아직도 혼란 스럽다.루프 내에서 if 문을 사용하는 이유는 어떤 문자를 추가해야하는지 추적하는 것입니다. – kalev25
@ kalev25 설명이 예제와 함께 추가되었습니다. –