재귀로 푸는 문제
func
에 제일 큰 수와, 현재까지의 수열을 매개변수로 넣는다.size
가 m
과 같으면 출력n
까지의 수를 현재까지 수열에 넣으면서 func
를 재호출한다.#include <iostream>
#include <vector>
using namespace std;
int n, m;
void func(int maxN, vector<int> v)
{
if (v.size() == m) {
for (int i = 0;i < m;i++) {
cout << v[i] << " ";
}
cout << endl;
return;
}
for (int i = maxN;i <= n;i++)
{
vector<int> tmp = v;
tmp.push_back(i);
func(i, tmp);
}
}
int main()
{
cin >> n >> m;
for (int i = 1;i <= n;i++)
{
vector<int> tmp;
tmp.push_back(i);
func(i, tmp);
}
return 0;
}