알고리즘 풀이

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;
}