在C ++中使三个数字为零

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

例如

输入1:

a = 4
b = 4c = 6

输出:

7

说明: 使所有数字均为“ 0”的最佳步骤总数为:

(4、4、6)

从第一个和第二个数字中删除'1'=(3,3,6)

从第1和第3个数字中删除'1'=(2,3,5)

从第1和第3个数字中删除'1'=(1、3、4)

从第1和第3个数字中删除'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。