알고리즘 풀이

N과 M (3)

남생이야 2024. 8. 7. 14:44

 

N과 M의 문제에서 방문 처리를 하지 않은 것으로 풀어냈다. 중복을 뽑아야하기 때문에 중복때문에 방문처리 내용을 제거 한 것이 문제의 핵심인 것 같다.

 

#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++)
	{

		arr[level] = i;
		visited[i] = 1;
		permutation(level + 1);
		visited[i] = 0;
	}

}

int main()
{
	cin >> n >> m;

	permutation(0);
	return 0;
}