在 C++ 中将三个数字变为零


假设我们有三个数字。任务是计算将所有这些数字都变成“0”所需的最佳步骤总数。

例如

输入-1

a = 4
b = 4

c = 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。

更新于: 2021年2月23日

203 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告