- (1) N개 중 중복을 허용하여 (A)M개를 순서있게 나열하기
- (1) N개 중 중복을 허용하여 (B)M개를 고르기
- (2) N개 중 중복 없이 (A)M개를 순서있게 나열하기
- (2) N개 중 중복 없이 (B)M개를 고르기
BOJ 15651 - N과 M (3)
def dfs(cnt):
if cnt == m:
# 수열 완성
for i in arr:
sys.stdout.write(str(i) + ' ')
sys.stdout.write('\n')
else:
for i in range(1, n+1):
arr[cnt]=i
dfs(cnt+1)
arr[cnt]=0
dfs(0)
BOJ 15652 - N과 M(4)
def dfs(cnt):
if cnt == m:
for i in arr:
sys.stdout.write(str(i) + ' ')
sys.stdout.write('\n')
else:
start = 1 if cnt==0 else arr[cnt-1]
for i in range(start , n+1):
arr[cnt]=i
dfs(cnt+1)
arr[cnt]=0
BOJ 15649 - N과 M(1)
def dfs(cnt):
if cnt == m:
#수열 완성
for i in arr:
sys.stdout.write(str(i)+' ')
sys.stdout.write('\n')
else:
for i in range(1, n+1):
if i in arr:
continue
arr[cnt]=i
dfs(cnt+1)
arr[cnt]=0
BOJ 15650 - N과 M (2)
def dfs(cnt):
if cnt==m:
for i in arr:
sys.stdout.write(str(i) + ' )
sys.stdout.write('\n')
else:
start=0 if cnt==0 else start=arr[cnt-1]+1
for i in range(start, n+1):
arr[cnt]=i
dfs[cnt+1]
arr[cnt]=0