我是新来的C ++输入和输出由系统处理,我们只能操作函数max_of_four()的主体来获取我们的o / p。
这就是我解决的问题,
#include <iostream>
#include <cstdio>
using namespace std;
int max_of_four(int a, int b, int c, int d)
{
int max = a;
if(b>a)
{
if (c>b)
{
if(d>c)
{
max = d;
}
else
{
max = c;
}
}
else if(d>b)
{
max = d;
}
else
{
max = b;
}
}
else if(c>a)
{
if(d>c)
{
max =d;
}
else
{
max = c;
}
}
else if(d>a)
{
max = d;
}
else
{
max = a;
}
return max;
}
int main()
{
int a, b, c, d;
scanf("%d %d %d %d", &a, &b, &c, &d);
int ans = max_of_four(a, b, c, d);
printf("%d", ans);
return 0;
}
当我们逐个获得输入时,我们可以有效地检查,但在这种情况下,我们不能触摸主块而只触及功能块。我解决的方式似乎太多了。有没有更快的方法来解决这个问题?
你可以使用std::max()
函数:
int max_of_four(int a, int b, int c, int d)
{
return max(a,max(b,max(c,d)));
}
但是,如果你限制不使用任何内置函数(有时我限制我的学生不使用任何内置函数),没有max()
函数的另一个解决方案是保存临时最大值,然后迭代到所有变量:
int max_of_four(int a, int b, int c, int d)
{
int max = a;
if(b>max) max = b;
if(c>max) max = c;
if(d>max) max = d;
return max;
}
最简单的可能是:
/* cout, assign or return it */ std::max({a, b, c, d});
如果它也是最有效的,则取决于您使用的标准库的实现质量。
不确定更快,但这是一个更简单的实现。
int max_of_four(int a, int b, int c, int d)
{
int max1 = a > b ? a : b;
int max2 = c > d ? c : d;
return (max1 > max2 ? max1 : max2);
}
在C ++ 11之后,最好的方法是使用初始化列表表示法并写入
#include <algorithm>
#include <initializer_list>
std::max({a, b, c, d});
由于C ++标准库和编译器之间的交互,这可能最终成为最快的解决方案。