在 C++ 中将三个数字变为零
假设我们有三个数字。任务是计算将所有这些数字都变成“0”所需的最佳步骤总数。
例如
输入-1
a = 4 b = 4c = 6
输出
7
说明:将所有数字都变成“0”所需的最佳步骤总数为:
(4, 4, 6)
从第一个和第二个数字中减去“1” = (3, 3, 6)
从第一个和第三个数字中减去“1” = (2, 3, 5)
从第一个和第三个数字中减去“1” = (1 ,3, 4)
从第一个和第三个数字中减去“1” = (0 ,3 ,3)
从第二个和第三个数字中减去“1” = (0 ,2, 2)
从第二个和第三个数字中减去“1” = (0, 1, 1)
从第二个和第三个数字中减去“1” = (0, 0, 0)
因此,将所有数字都变成零的总步骤数为“7”
解决此问题的方法
为了解决这个问题,我们将从任意两个数字中减去“1”,使得这两个数字的和大于最后一个数字。为了找到使它们变为零的最小步骤数,我们将计算最小步骤数。
- 将三个数字作为输入。
- 检查两个数字(例如“a”和“b”)的和是否大于“c”,并且 a > 0,b > 0,然后从“a”和“b”中减去“1”。
- 从答案中找到最小值并返回结果。
示例
#include <bits/stdc++.h> using namespace std; int maxSteps(int a, int b, int c) { int res = 0; while (a + b > c and a > 0 and b > 0) { a--; b--; res++; } res += min(c, a + b); return res; } int main() { int a = 4; int b = 4; int c = 6; cout << maxSteps(a, b, c) << endl; return 0; }
运行以上代码将生成以下输出:
输出
7
在给定的输入中 a = 4,b = 4 且 c = 6,将所有数字都变成零需要七个步骤,因此程序返回输出为 7。
广告