728x90
▶문제 : 15651번: N과 M (3) (acmicpc.net)
▶코드 작성
#include <iostream>
int n, m;
int arr[7];
void print(int i) {//i : arr배열의 길이
if (i == m) {//arr배열의 길이가 m일 때 출력
for (int j = 0; j < m; j++) {
std::cout<<arr[j]<<' ';
}
std::cout<<'\n';
return;
}
for (int j = 1; j <= n; j++) {//1부터 n까지 반복
arr[i] = j;//i자리에 j대입
print(i + 1);//다음 배열자리에 넣을 수를 대입하기 위해 재귀함수 호출
}
}
int main() {
std::cin >> n >> m;
print(0);
}
▶해석
print함수에서 i는 arr배열의 길이이므로 i가 m과 같을 때 출력해준다.
문제가 중복 상관없이 모든 경우의 수를 출력하므로 for문을 이용해 1부터 n까지 반복하여 arr [i]에 대입한 후 재귀 함수를 호출한다.
728x90
'백준(baekjoon) > C++' 카테고리의 다른 글
백준(BaekJoon) 15652 : N과 M (4) c++ (0) | 2022.07.04 |
---|---|
백준(BaekJoon) 14888 : 연산자 끼워넣기 c++ (0) | 2022.07.04 |
백준(BaekJoon) 9663 : N-Queen c++ (0) | 2022.07.01 |
백준(BaekJoon) 15650 : N 과 M (2) c++ (0) | 2022.06.29 |
백준(BaekJoon) 15649 : N 과 M (1) c++ (0) | 2022.06.29 |
댓글