[ 백트래킹 코드 ]
#include <iostream>
using namespace std;
int N, M;
int arr[10];
void func(int depth, int start){
if(depth == M){
for(int i=0;i<M;i++)
cout << arr[i] << ' ';
cout << '\n';
}else{
for(int i=start;i<N;i++)
{
arr[depth] = i+1;
func(depth+1, i+1);
}
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> M;
func(0,0);
return 0;
}
- 다음 시작될 순서인
start
변수를 넘겨서 큰 순서로 만듬!
[ next_permutation 코드]
#include <iostream>
#include <algorithm>
using namespace std;
int N, M;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> M;
int arr[N];
fill(arr, arr+N, 1);
for(int i=0;i<M;i++) arr[i] = 0;
do{
for(int i=0;i<N;i++)
if(!arr[i])
cout << i+1 << ' ';
cout << '\n';
}while(next_permutation(arr,arr+N));
return 0;
}