재귀를 이용한 조합 구하기
dfs처럼 방문 체크를 해주면서 k개가 될때까지 계속 재귀를 돌기
#include <iostream>
#include <vector>
using namespace std;
int n = 5, k = 3, a[5] = {1, 2, 3, 4, 5};
void print(vector<int> b)
{
for (int i : b)
cout << i << " ";
cout << '\n';
}
void combi(int start, vector<int> &b)
{
if (b.size() == k)
{
print(b);
return;
}
for (int i = start + 1; i < n; i++)
{
b.push_back(i);
combi(i, b);
b.pop_back();
}
return;
}
int main()
{
vector<int> b;
combi(-1, b);
return 0;
}
-- 반복문을 이용해서 구하기
n이 2개면 2중, 3개면 3중 for문..
n이 많아질수록 비효율적이된다
'C++ 알고리즘 > 풀다가 알게된 것' 카테고리의 다른 글
소수점 n 자리에서 반올림, 올림 , 내림 (D2 1984. 중간 평균값 구하기 ) (0) | 2024.10.12 |
---|---|
우선순위큐 (1) | 2024.10.01 |
split 메서드 구현하기 (1) | 2024.08.27 |
순열 구하기 - next_permutation, 재귀 (0) | 2024.08.27 |
c++ 코딩테스트 풀면서 알게 된 것들 기록 (0) | 2024.07.31 |