본문 바로가기

Computer Science&Engineering/코딩테스트

[백준 15649] N과 M (1)

# 문제링크

www.acmicpc.net/problem/15649

 

15649번: N과 M (1)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

 

이 문제 역시 순열을 출력하는 문제입니다. 이전에 풀었던 순열 문제를 아주 살짝! 수정해주면 풀이를 할 수 있습니다. 아래 "모든 순열" 글을 참고하세요.

 

2021.03.13 - [Computer Science&Engineering/코딩테스트] - [백준 10974] 모든 순열

 

# 제출 코드

 

// N과 M(1) 
# include <iostream>
using namespace std;

int N, M;
bool check[10];
int num[10];

void DFS(int node){
	if (node >= M) { // M개 출력
		for(int i = 0; i < M; i++){
			cout << num[i] << ' ';
		}
		cout << '\n';
		return;
	}
	for(int i = 1; i<=N; i++){ // 1부터 N까지 수
		if(check[i] == true) continue;
		check[i] = true;
		num[node] = i;
		DFS(node + 1);	
		check[i] = false;
	}
}

int main() {	
	cin >> N >> M;
	DFS(0);
	return 0;
}
반응형