diff options
author | kaiwu <kaiwu2004@gmail.com> | 2023-01-13 15:38:02 +0800 |
---|---|---|
committer | kaiwu <kaiwu2004@gmail.com> | 2023-01-13 15:38:02 +0800 |
commit | 5b4403c08297c5742a7cef0434902f390be505f1 (patch) | |
tree | be10b9ee00e04829daf6de109782ca69732d8245 | |
parent | fb7d36801a0b4d12a7337ff06afaeabcc0180d5f (diff) | |
download | advent-of-code-5b4403c08297c5742a7cef0434902f390be505f1.tar.gz advent-of-code-5b4403c08297c5742a7cef0434902f390be505f1.zip |
2022 day19 part1 dfs
-rw-r--r-- | src/2022/day19/aoc.cpp | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/2022/day19/aoc.cpp b/src/2022/day19/aoc.cpp index f5ea6a1..7124873 100644 --- a/src/2022/day19/aoc.cpp +++ b/src/2022/day19/aoc.cpp @@ -62,22 +62,30 @@ void build_product(build_result& r, int x) { } } -int to_build(const blueprint& b, const build_result& r) { - int i = 3; - return i; +std::vector<int> to_build(const blueprint& b, const build_result& r) { + std::vector<int> xs; + for (int i = 3; i >= 0; i--) { + if (can_build(i, r, b)) { + xs.push_back(i); + } + } + xs.push_back(INT32_MAX); + return xs; } void build(int m, const blueprint& b, build_result r, build_result& max) { if (m > 0) { // print_result(b.idx, 24 - m, r); - int i = to_build(b, r); - if (i != INT32_MAX) { - auto r0 = build_robot(i, r, b); - build_product(r0, i); - build(m - 1, b, r0, max); - } else { - build_product(r, 5); - build(m - 1, b, r, max); + auto is = to_build(b, r); + for (int i : is) { + if (i != INT32_MAX) { + auto r0 = build_robot(i, r, b); + build_product(r0, i); + build(m - 1, b, r0, max); + } else { + build_product(r, 5); + build(m - 1, b, r, max); + } } } else { if (max < r) { |