dfs,评绿高了
查看原帖
dfs,评绿高了
1093710
AHuLei楼主2024/5/26 15:49

一个简单的dfs就行了,建议降```cpp #include <bits/stdc++.h>//深度优先搜索 #define N 100010 typedef long long ll; using namespace std; ll a, b, k; ll sum1 = 0; string s;

void dfs(int ans, ll sum2) { if (ans == k) { sum1 = max(sum1, sum2); return; } int r = s[ans] - '0'; if (a >= 9 - r) { a -= 9 - r; dfs(ans + 1, sum2 * 10 + 9); a += 9 - r; } else { int a2 = a; a = 0; dfs(ans + 1, sum2 * 10 + r + a2); a = a2; } if (b >= r + 1 && r != 9) { b -= r + 1; dfs(ans + 1, sum2 * 10 + 9); b += r + 1; } }

int main() { cin >> s >> a >> b; k = s.size(); dfs(0, 0); cout << sum1 << endl; }

黄
2024/5/26 15:49
加载中...