AcWing 614. 最大值
原题链接
中等
作者:
薛定谔的猫_7
,
2021-03-28 14:17:55
,
所有人可见
,
阅读 227
算法1
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c,max;
cin>>a>>b>>c;
if(a>b)
if(a>c)
max=a;
else
max=c;
else
if(b>c)
max=b;
else
max=c;
cout<<max<<" eh o maior";
return 0;
}
果然,运行也能通过
不过看到第二句话就有点不明所以了,这个公式是啥,为啥它能求出两个数的最大值!!(数学太菜)
不过感觉通过这个公式把数带入就能 求出两个数的最大值,那就带吧
算法2
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c,max;
cin>>a>>b>>c;
max=(a+b+abs(a-b))/2;
max=(max+c+abs(max-c))/2;
return 0;
}
下面就来说一下这个公式为什么就能求出来两个数的最大值:
当a>=b时,max(a,b)=(a+b+a-b)/2=a;
当a<b时,max(a,b)=(a+b+b-a)/2=b;
其实还一个求两个数最小值的公式:
min(a,b)=(a+b-abs(a-b))/2;
看别人的题解时,发现C++中有专门求两个数最大值最小值的函数,即algorithm头文件下的的max()、min()
算法3
#include <iostream>
#include <algorithm>///一定要写这个头文件
using namespace std;
int main(){
int a,b,c;
int max1 = 0;
cin>>a>>b>>c;
max1 = max(a,b);///调用库函数max
max1 = max(max1,c);
cout<<max1<<" eh o maior"<<endl;
return 0;
}
作者:无味
链接:https://www.acwing.com/solution/content/16095/
来源:AcWing