- 1부터 N 까지 가능한 조합들에 대해서 오름차순으로 출력해야 한다.
- STL 에서 제공해주는 next_permutation 을 사용하면, 문제에서 구해야 하는 수열들이 자동으로 구해지게 된다.
- 수열은 그냥 나열된 수 들일 뿐이다. 등차 수열이 아닌 점에 유의하자(난 왜 등차수열로 풀고 있었을까)
- 다만 다른 N 과 M 문제들처럼 백트래킹을 이용하여 재귀적으로 푸는 것이 정석이다.
- 이 경우, 15649번 - N 과 M (1) 문제에서 탐색을 시작하는 인덱스만 조절해주면 된다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int n, m;
int main(void)
{
cin.tie(0);
cout.tie(0);
ios_base::sync_with_stdio(0);
cin >> n >> m;
vector<bool> pv(n, true);
for(int i = 0 ; i < m ; i++) // 8개 중 m 개의 조합을 계산
{
pv[i] = false;
}
do
{
for(int i = 0 ; i < pv.size() ; i++)
{
if(pv[i] == 0) cout << i + 1 << " "; // 해당 조합 출력
}
cout << '\n';
} while(next_permutation(pv.begin(), pv.end()));
}
'PS > BOJ' 카테고리의 다른 글
[백준] 15353.cpp : 큰 수 A+B (2) (0) | 2020.07.20 |
---|---|
[백준] 16566.cpp : 카드 게임 (0) | 2020.07.19 |
[백준] 16236.cpp : 아기 상어 (0) | 2020.07.16 |
[백준] 15686.cpp : 치킨 배달 (0) | 2020.07.15 |
[백준] 14500.cpp : 테트로미노 (0) | 2020.07.13 |