https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV2b7Yf6ABcBBASw
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
간단한 dfs 문제
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N, B;
vector<int> height;
vector<int> visited;
int S = 1e9;
void init();
void dfs(int now, int sum) {
if (sum > S) return;
if (sum >= B) {
S = min(S, sum);
return;
}
for (int i = now; i < N; i++) {
if (visited[i]) continue;
visited[i] = 1;
sum += height[i];
dfs(i, sum);
sum -= height[i];
visited[i] = 0;
}
}
int main() {
int T;
cin >> T;
for (int tc = 1; tc <= T; tc++) {
init();
cin >> N >> B;
for (int i = 0; i < N; i++) {
int h;
cin >> h;
height.push_back(h);
}
visited.assign(N, 0);
dfs(0, 0);
cout << "#" << tc << " " << S - B << endl;
}
return 0;
}
void init() {
height.clear();
S = 1e9;
}
'코딩 > SWEA' 카테고리의 다른 글
[SWEA] 2477. [모의 SW 역량테스트] 차량 정비소 C++ (0) | 2024.10.10 |
---|---|
[SWEA] 1824. 혁진이의 프로그램 검증 C++ (1) | 2024.10.09 |
[SWEA] D3. 7732. 시간 개념 C++ (0) | 2024.09.01 |
[SWEA] D3. 10912. 외로운 문자 C++ (0) | 2024.09.01 |