본문 바로가기
알고리즘&자료구조/백트레킹

백준 15652

by do_ng 2024. 3. 8.
#include<iostream>	
using namespace std;


int N, M;
bool state[8][9]; // N의 상태는 1부터 시작 인덱스 1부터 들어감
int arr[8];

void func(int k) {

	if (k == M) {
		for (int i = 0; i < M; i++)
			cout << arr[i] << ' ';
		cout << '\n';
		return;
	}

	int j = 1; // 1, 2 -> 길이가 1인 경우 비내림차순 정렬 적용 X 
	if (k >= 1) j = arr[k - 1]; // 1 1(O), 1 2(O), 2 1(X) -> K가 1부터 이전 인덱스의 값 이상이여야 함
	for (int i = j; i <= N; i++) {
		if (state[k][i] == 0) {
			arr[k] = i;
			state[k][i] = 1;
			func(k + 1);
			state[k][i] = 0;
		}
	}	

}


int main(void) {
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	// 1.입력	
	cin >> N >> M;	
	func(0);
	
	return 0;
}

'알고리즘&자료구조 > 백트레킹' 카테고리의 다른 글

백준 15655  (0) 2024.03.11
백준 15654  (0) 2024.03.10
백준 15651  (2) 2024.03.07
백준 15650  (0) 2024.03.06
백준 15649  (0) 2024.03.03