[BOJ] 15649번 : N과 M (1)

2024. 8. 17. 14:48Algorithm

1. problem : 

https://www.acmicpc.net/status?user_id=rudgh99&problem_id=15649&from_mine=1

 

 

2. solution 1 :

#include <bits/stdc++.h>
using namespace std;

int N, M;
int nums[10];
int isUsed[10];
int ans[10];
void solve(int k) {
	if (k == M) {
		for (int i = 0; i < M; i++) cout << ans[i] << ' ';
		cout << '\n';
		return;
	}
	for (int i = 0; i < N; i++) {
		if (!isUsed[i]) {
			isUsed[i] = 1;
			ans[k] = nums[i];
			solve(k + 1);
			isUsed[i] = 0;
		}
	}
}


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

	cin >> N >> M;
	// 값 초기화
	for (int i = 0; i < N; i++) nums[i] = i + 1; 
	for (int i = 0; i < N; i++) isUsed[i] = 0; 

	solve(0);
}

backtracking이다. 외우자. 외우자. template이다 생각하고 외우자.

source code 출처 : https://github.com/encrypted-def/basic-algo-lecture/blob/master/0x0C/solutions/15649.cpp

 

basic-algo-lecture/0x0C/solutions/15649.cpp at master · encrypted-def/basic-algo-lecture

바킹독의 실전 알고리즘 강의 자료. Contribute to encrypted-def/basic-algo-lecture development by creating an account on GitHub.

github.com

 

 

'Algorithm' 카테고리의 다른 글

[C++] next_permutation  (0) 2024.08.17
[BOJ] 9663번 : N-Queen  (0) 2024.08.17
[BOJ] 1182번 : 부분수열의 합  (0) 2024.08.17
[BOJ] 1992번 : 쿼드트리  (0) 2024.08.16
[BOJ] 2630 번 : 색종이 만들기  (0) 2024.08.16