알고리즘 풀이
N과 M (1)
남생이야
2024. 8. 7. 14:45
주어진 뽑기 갯수만큼 재귀호출하면서 이전에 방문한 것은 참조하지 않도록 구성하는게 핵심인 것 같다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int n, m;
int visited[9];
int arr[9];
void permutation(int level)
{
if (level == m)
{
for (int i = 0; i < m; i++)
{
cout << arr[i] << " ";
}
printf("\n");
return;
}
for (int i = 1; i <= n ; i++)
{
if (visited[i] != 1)
{
arr[level] = i ;
visited[i] = 1;
permutation(level+1);
visited[i] = 0;
}
}
}
int main()
{
cin >> n >> m;
permutation(0);
return 0;
}