Cho 3 số, đếm số bước tối ưu để đưa cả 3 về 0. Mỗi bước trừ 1 từ 2 số bất kỳ.
Ví dụ
a=4, b=4, c=6
Output: 7
Các bước: (4,4,6)→(3,3,6)→(2,3,5)→(1,3,4)→(0,3,3)→(0,2,2)→(0,1,1)→(0,0,0)
Cách tiếp cận
- Trừ 1 từ 2 số có tổng lớn hơn số còn lại
- Tìm số bước tối thiểu
Code C++
#include <bits/stdc++.h>
using namespace std;
int maxSteps(int a, int b, int c) {
int res = 0;
while (a + b > c && a > 0 && b > 0) {
a--; b--; res++;
}
res += min(c, a + b);
return res;
}
int main() {
int a = 4, b = 4, c = 6;
cout << maxSteps(a, b, c) << endl;
return 0;
}
Kết quả
7
Với a=4, b=4, c=6 cần 7 bước.