在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。