题目:https://vjudge.net/problem/UVA-1587
题意:给出6个矩形的长和宽,均小于10000,判断是否可组成一个长方体,可以的话,”输出 POSSIBLE“。否则输出“IMPOSSIBLE”
解法:把6个面排序,先按宽度从小到大排,再把宽度相等的面按长度从小到大排。经上述方式排序后,要构成长方体,首先保证第1、2面,第3 、4面,第5、6面分别相同,而且,第2、 3面的宽必须相等(上面已保证1和2,3和4面分别相同),第2面的长等于第5面的宽,第四、五面的长必须相等。
要保证每个面的长大于宽,否则上述排序没用,也就得不到正解。
#include
#include
#include
using namespace std;
struct uct
{
int w,h;//w 表示宽,h表示长
};
uct a[6];
int w;
int cmp(uct n1,uct n2)
{
if(n1.w==n2.w)
return n1.ha[i].h)
swap(a[i].w,a[i].h);
}
int i=0 ;
if(a[i].w>a[i].h)
swap(a[i].w,a[i].h);
sort(a,a+6,cmp);
/* for(int i=0 ;i<6 ;i++)
{
printf("%d %d\n",a[i].w,a[i].h);
}
*/
if(!pd())
printf("IM");
puts("POSSIBLE");
}
return 0;
}