- 재귀 문제 풀이 4단계
- 1단계: 굳이성: 문제 풀이를 위함이라 굳이 써야 함
- 2단계: BaseCondition: a > N 이상의 수가 되면 종료
- 3단계: 점화식: 점화식을 수학 공식을 통해 만들어야 함
- 3-1단계: 분해: 수가 정방향으로 증가하도록 dfs(a+vec[i]∗n,n∗10) 설계
- 3-2단계: 조합: max 값을 조합해 최종 값 도출
#include <bits/stdc++.h>
using namespace std;
int N, K, tmp, ans = 0;
vector<int> vec;
void dfs(int a, int n){
if(a > N) return;
ans = max(ans, a);
for(int i = 0; i < vec.size(); ++i){
dfs(a + vec[i] * n, n * 10);
}
}
int main(){
cin >> N >> K;
for(int i = 0; i < K; ++i){
cin >> tmp;
vec.push_back(tmp);
}
dfs(0, 1);
cout << ans;
return 0;
}