자연수 N이 주어지면 1부터 N까지의 원소를 갖는 집합의 부분집합을 모두 출력하는 프로그램
을 작성하세요.
▣ 입력설명
첫 번째 줄에 자연수 N(1<=N<=10)이 주어집니다.
▣ 출력설명
첫 번째 줄부터 각 줄에 하나씩 부분집합을 아래와 출력예제와 같은 순서로 출력한다.
단 공집합은 출력하지 않습니다.
▣ 입력예제 1
3
▣ 출력예제 1
1 2 3
1 2
1 3
1
2 3
2
3
def DFS(x) :
if 0<x<=n :
print(x)
DFS(x*2)
DFS(x*2+1)
else :
return
if __name__=='__main__' :
n=int(input())
DFS(1)
def DFS(x) :
if x==n+1: #만약에 입력값이 3이면 4가 종착역임, 종료지점에 오면 그때서야 출력해주면 됨
for i in range(1,n+1) :
if ch[i]==1 :
print(i, end=' ')
print()
return
else :
ch[x]=1 #사용한다는 것 (리스트에 1이라고 채워주기)
DFS(x+1)
ch[x]=0 #사용하지 않는 것 (리스트에 빵 넣어주기)
DFS(x+1)
if __name__=='__main__' :
n=int(input())
ch=[0]*(n+1) # 원소를 포함시킬지 포함시키지 않을지 결정해주는 거
DFS(1)