1부터 N까지 번호가 적힌 구슬이 있습니다. 이 중 M개를 뽑는 방법의 수를 출력하는 프로그램을 작성하세요.
첫 번째 줄에 자연수 N(3<=N<=10)과 M(2<=M<=N) 이 주어집니다.
첫 번째 줄에 결과를 출력합니다. 맨 마지막 총 경우의 수를 출력합니다.
출력순서는 사전순으로 오름차순으로 출력합니다.
4 2
1 2
1 3
1 4
2 3
2 4
3 4
6
from sys import stdout
def check_big(a):
for i in range(1, len(a)):
if a[i - 1] >= a[i]:
return False
return True
def dfs(a):
global cnt
if a == m:
if check_big(lst):
stdout.write(" ".join(lst) + "\n")
cnt += 1
else:
for i in range(1, n + 1):
lst[a] = str(i)
dfs(a + 1)
cnt = 0
n, m = map(int, input().split())
lst = [0] * m
dfs(0)
print(cnt)
from sys import stdout
def dfs(a, b):
global cnt
if a == m:
stdout.write(" ".join(lst) + "\n")
cnt += 1
else:
for i in range(b, n + 1):
lst[a] = str(i)
dfs(a + 1, i + 1)
cnt = 0
n, m = map(int, input().split())
lst = [0] * m
dfs(0, 1)
print(cnt)
from sys import stdout
def dfs(a, b):
global cnt
if a == m:
stdout.write(" ".join(lst) + "\n")
cnt += 1
else:
for i in range(b, n + 1):
lst[a] = str(i)
dfs(a + 1, i + 1)
cnt = 0
n, m = map(int, input().split())
lst = [0] * m
dfs(0, 1)
print(cnt)