题解 P4414 【[COCI2006-2007#2] ABC】
论如何正确地花式AC一道红题
这道题目,完全可以像楼上的大佬一样,一个sort直接A掉。
但是本人用了一个更加装逼通俗易懂的方法,以至于萌新们都能看懂QAQ
偶代码唯一的亮点就是,本人是如何对3个数进行排序
一开始本人是这么排的:
int p[3];
p[0]=min(a,min(b,c));
p[1]=min(a,max(b,c));
p[2]=max(a,max(b,c));
惨烈。。。WA掉4个点
测过样例①后发现,问题出在中间一个数上。
因为如果这样排,对于a是最大的数的情况就会WA。。。
所以我们要再来想想,应该怎么排呢?
紧接着,本人清奇的思路就出来了:
max(a,b) max(b,c) max(a,c)中,一定有两个是最大的那一个数。
而剩下的那一个,就是中间的那个数。
好了,顺着这个思路走,就AC了。。。
代码拿走不谢
#include <bits/stdc++.h>
using namespace std;
int p[3];
int main()
{
int a,b,c;
cin>>a>>b>>c;
char i,j,k;
cin>>i>>j>>k;//输入
p[0]=min(a,min(b,c));
p[2]=max(a,max(b,c));//处理最大和最小的数
int x=max(a,b),y=max(a,c),z=max(b,c);
if(x==y) p[1]=z;
if(x==z) p[1]=y;
if(y==z) p[1]=x;//核心部分,处理中间的数
cout<<p[i-65]<<" "<<p[j-65]<<" "<<p[k-65]<<endl;//输出
return 0;
}