1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include <stdio.h> #include <vector> using namespace std; vector<int> arr; void dfs(int idx, int tmp, int sum); int n, m, maxS = 0; int main() { scanf("%d %d", &n, &m); for (int i = 0; i < n; i++) { int num; scanf("%d", &num); arr.push_back(num); } for (int i = 0; i < n; i++) { dfs(i, 1, arr[i]); } printf("%d", maxS); } void dfs(int idx, int tmp, int sum) { if (tmp == 3) { if (sum <= m && maxS < sum) { maxS = sum; } return; } else if (m <= sum) { return; } for (int i = idx + 1; i < n; i++) { dfs(i, tmp + 1, sum + arr[i]); } } | cs |
'알고리즘 > DFS' 카테고리의 다른 글
4677 Oil Deposit (0) | 2020.01.14 |
---|---|
2468 안전영역 (0) | 2020.01.14 |
11438 LCA2 (0) | 2019.09.15 |
11437 LCA (0) | 2019.09.14 |
10451 순열 사이클 (0) | 2019.09.04 |