Algorithm/5강(2)
-
[실전 알고리즘] 0x0C강 - 백트래킹
1. 알고리즘 설명 백트래킹 - 현재 상태에서 가능한 모든 후보군을 따라 들어가며 탐색하는 알고리즘 상태공간트리 - 백트래킹의 모든 후보군의 상태를 나타내는 트리. 2. 연습 문제 1 - N과 M BOJ 15649번: N과 M (1) 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 8중 for문으로도 구현 가능하지만 백트레킹을 이용하면 더 좋다. #include #define MAX 10 using namespace std; int n,m; int arr[MAX]; bool isused[MAX]; void f..
2022.02.07 -
[실전 알고리즘] 0x0B강 - 재귀
1. 알고리즘 설명 재귀 - 하나의 함수에서 자기 자신을 다시 호출해 작업을 수행하는 알고리즘 재귀로 N부터 1까지 출력하는 함수 & 1부터 N까지의 합을 구하는 함수 void func1(int n){ if (n==0)return; cout 2 출력 -> func1(1) 호출 -> 1 출력 -> func1(0) 호출 -> 종료 이렇게 과정을 따라가고 나면 func1(3)을 실행했을 때 3 2 1이 출력된다는 것을 알 수 있다. 2. 귀납적 사고 func1(1)이 1을 출력한다. func1(k)가 k k-1 k-2 … 1을 출력하면, 즉 k부터 1까지 차례대로 출력하면 func1(k+1)은 k+1부터 1까지 차례로 출력한다는걸 보여야 한다. k+1이 출력된 이후 func1(k)가 호출되고 func1(k)는..
2022.02.06