diff --git a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/7.cpp b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/7.cpp index f2d9764..9984521 100644 --- a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/7.cpp +++ b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/7.cpp @@ -13,10 +13,13 @@ struct Node { int st[N]; int n; LL res; -void dfs(int r, LL sum) { // u:本轮选择哪个靶子, r:剩余几次机会 sum:已经取得的累加和 - +string finalPath; +void dfs(int r, LL sum, string path) { // u:本轮选择哪个靶子, r:剩余几次机会 sum:已经取得的累加和 if (r == 0) { - res = max(res, sum); + if (sum > res) { + res = sum; + finalPath = path; + } return; } @@ -29,7 +32,7 @@ void dfs(int r, LL sum) { // u:本轮选择哪个靶子, r:剩余几次机会 a[R].left = L; // 深搜 - dfs(r - 1, sum + a[L].num * a[u].num * a[R].num); + dfs(r - 1, sum + a[L].num * a[u].num * a[R].num, path + to_string(u)); // 回溯 a[L].right = u; @@ -53,8 +56,9 @@ int main() { a[i].right = i + 1; } - dfs(n, 0); + dfs(n, 0, ""); cout << res << endl; + cout << finalPath << endl; return 0; } \ No newline at end of file