순열 구현과 다르게,
함수를 재귀로 호출하는 for 문에서
i = 0부터가 아니라 현재 인덱스부터 돌도록 만든다.
#include <iostream>
#include <vector>
using namespace std;
int N, M;
int visit[9];
vector<int> v;
void solution(int now, int lev) {
if (lev == M) {
for (int i = 0; i < v.size(); i++) cout << v[i] << " ";
cout << "\n";
return;
}
for (int i = now; i <= N; i++) {
if (visit[i]) continue;
visit[i] = 1;
v.push_back(i);
solution(i, lev + 1);
visit[i] = 0;
v.pop_back();
}
}
int main() {
cin >> N >> M;
solution(1, 0);
return 0;
}
1부터 N까지 담아둘 배열은 이 문제에선 필요가 없었다! (i로 대체)