Description
大家都知道实验室里小莉,小晨和小芹是非常非常要好的朋友,但是最近呢,这三个人感觉真的是太无聊太无聊太无聊了!有天,小莉突发奇想,想来测试一下她们仨的默契程度。她们三个人每人都自己找了一个矩形的木板,看这三个木板能不能拼成一个正方形。如果能,那就代表着她们真是的很有很有默契的咯~如果不能,或许就没有那么有默契辣。这可把小莉愁坏了啊,她们到底有没有默契呀?你能帮帮她吗?
Input
输入包括三行,第一行代表第一个矩形的长h(h<1000)和宽w(w<1000),第二行代表第二个矩形的长h(h<1000)和宽w(w<1000),第三行代表第三个矩形的长h(h<1000)和宽w(w<1000)。
Output
输出单行结果,如果有默契请输出“YES”,否则输出“NO”,输出没有双引号。
Sample Input
8 2 1 6 7 6
Sample Output
YES
解题思路:这道题比赛的时候真是把我给吓蒙了,确实需要考虑的情况不少,但其实冷静分析一下,我们会发现其实只有两种大的情况:第一种是三个长
条矩形,最长边相等,最短边之和等于最长边;第二种情况是有一个长条矩形,剩下两个矩形共同组成正方形除了长条矩形的部分,具体的判断条件是,
除了长条矩形的剩下两个矩形中,有两边相等,剩下两边值和等于长条矩形的最长边。
上代码:
1 #include<stdio.h> 2 #include<algorithm> 3 using namespace std; 4 struct message 5 { 6 int l; 7 int w; 8 }; 9 int my_comp(message a,message b) 10 { 11 if(a.l>b.l) 12 return 1; 13 else 14 return 0; 15 } 16 int main() 17 { 18 int i,b,c; 19 int flag=0; 20 struct message a[3]; 21 for(i=0; i<3; i++) 22 { 23 scanf("%d%d",&b,&c); 24 if(b>=c) 25 { 26 a[i].l=b; 27 a[i].w=c; 28 } 29 else 30 { 31 a[i].l=c; 32 a[i].w=b; 33 } 34 } 35 sort(a,a+3,my_comp); 36 if(a[0].l==a[1].l&&a[1].l==a[2].l&&a[0].w+a[1].w+a[2].w==a[0].l) 37 { 38 flag=1; 39 } 40 if(a[2].w+a[1].l==a[0].l&&a[1].w==a[2].l&&a[2].l+a[0].w==a[0].l) 41 { 42 flag=1; 43 } 44 if(a[1].w+a[2].l==a[0].l&&a[2].w==a[1].l&&a[1].l+a[0].w==a[0].l) 45 { 46 flag=1; 47 } 48 if(a[1].l+a[2].l==a[0].l&&a[1].w==a[2].w&&a[2].w+a[0].w==a[0].l) 49 { 50 flag=1; 51 } 52 if(a[1].w+a[2].w==a[0].l&&a[1].l==a[2].l&&a[1].l+a[0].w==a[0].l) 53 { 54 flag=1; 55 } 56 if(flag==1) 57 printf("YES "); 58 else 59 printf("NO "); 60 return 0; 61 }