반응형
문제 해결 알고리즘
1. N과 M 값을 입력을 받고 주어진 수들을 벡터(v)에 저장한 다음 정렬해주고 dfs()함수를 실행해준다.
2. dfs 함수에서 만약 n이 M과 같으면 배열(arr)에 있는 값들을 출력해준다.
같지 않다면 배열에 벡터(v)에 저장되어 있는 수들을 배열에 각각 넣고 dfs함수에 n+1 값을 파라미터로 넣어준다.
소스 코드
#include <bits/stdc++.h>
using namespace std;
int N, M;
int arr[9], v[9];
void dfs(int n){
if(n == M){
for(int i=0;i<M;i++){
cout << arr[i] << ' ';
}
cout << '\n';
return;
}
for(int j=0;j<N;j++){
arr[n] = v[j];
dfs(n+1);
}
}
int main(){
cin >> N >> M;
for(int i=0;i<N;i++){
cin >> v[i];
}
sort(v, v+N);
dfs(0);
}
반응형
'알고리즘 문제 해결 > BOJ' 카테고리의 다른 글
[투 포인터] BOJ 1806 부분합 (0) | 2021.01.10 |
---|---|
[백 트래킹] BOJ 1759 암호 만들기 (0) | 2021.01.08 |
[백 트래킹] BOJ 15655 N과 M (6) (0) | 2020.12.28 |
[백 트래킹] BOJ 15654 N과 M (5) (0) | 2020.12.26 |
[백 트래킹] BOJ 15652 N과 M (4) (0) | 2020.12.24 |