#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v;
int n, k;
cin >> n >> k;
for (int i = 0; i < n; i++)
v.push_back(i + 1);
vector<int> ind; //0과 1을 저장할 배열 벡터 생성
for (int i = 0; i < k; i++)
ind.push_back(1); // k개의 1을 추가
for (int i = 0; i < v.size() - k; i++)
ind.push_back(0); // n-k개의 0을 추가
sort(ind.begin(), ind.end());
do
{
for (int i = 0; i < ind.size(); i++)
{
if (ind[i] == 1)
{
printf("%d ", v[i]);
}
}
printf("\n");
} while (next_permutation(ind.begin(), ind.end()));
return 0;
}
1부터 N까지의 수 중 K개를 뽑아서 만들 수 있는 조합의 개수!
'알고리즘 > 써먹기 좋은 알고리즘' 카테고리의 다른 글
Quick Selection을 이용한 k번째 숫자 탐색: O(n)의 시간 복잡도 (0) | 2020.03.29 |
---|