UVA - 1587 Box
来源:互联网 发布:矩阵的迹有什么用 编辑:程序博客网 时间:2024/05/01 22:32
Ivan works at a factory that produces heavy machinery. He has a simple job -- he knocks up wooden boxes of different sizes to pack machinery for delivery to the customers. Each box is a rectangular parallelepiped. Ivan uses six rectangular wooden pallets to make a box. Each pallet is used for one side of the box.Joe delivers pallets for Ivan. Joe is not very smart and often makes mistakes -- he brings Ivan pallets that do not fit together to make a box. But Joe does not trust Ivan. It always takes a lot of time to explain Joe that he has made a mistake. Fortunately, Joe adores everything related to computers and sincerely believes that computers never make mistakes. Ivan has decided to use this for his own advantage. Ivan asks you to write a program that given sizes of six rectangular pallets tells whether it is possible to make a box out of them.
Input
Input file contains several test cases. Each of them consists of six lines. Each line describes one pallet and contains two integer numbers wand h ( 1w, h10 000) -- width and height of the pallet in millimeters respectively.Output
For each test case, print one output line. Write a single word ` POSSIBLE' to the output file if it is possible to make a box using six given pallets for its sides. Write a single word ` IMPOSSIBLE' if it is not possible to do so.Sample Input
1345 25842584 6832584 1345683 1345683 13452584 6831234 45671234 45674567 43214322 45674321 12344321 1234
Sample Output
POSSIBLEIMPOSSIBLE
解题思路: 把w和h作比较,然后w是小的,h是大的,排好一级排序后,按照6个面来排序,排好之后如果是possible,就会有0==1的面,2==3的面,4==5的面,取出不同的3个面,然后进行宽高是否相等。
#include <iostream>#include <cstdio>#include <algorithm>#define MAXD 10using namespace std;struct M{ int w; int h;}rectangular[MAXD];//比较交换bool cmp(M m,M n){ if(m.w > n.w) return true; if(m.w < n.w) return false; if(m.h > n.h) return true; else return false;}//判断是否能构造长方体bool solve(){ M ans[MAXD]; int m = 0; for(int i = 0; i < 6 ; i+=2){ if(rectangular[i].w==rectangular[i+1].w && rectangular[i].h==rectangular[i+1].h) ans[m] = rectangular[i],m++; else return false; } if (rectangular[0].h==rectangular[2].h && rectangular[0].w==rectangular[4].h && rectangular[2].w==rectangular[4].w) return true; else return false;}void exchange(int i){ //宽高交换 int temp = rectangular[i].w; rectangular[i].w = rectangular[i].h; rectangular[i].h = temp;}int main(){ //一级排序是宽高排序 while(scanf("%d",&rectangular[0].w) != EOF){ scanf("%d",&rectangular[0].h); if(rectangular[0].w > rectangular[0].h) exchange(0); for(int i = 1; i < 6 ; i++){ scanf("%d%d",&rectangular[i].w,&rectangular[i].h); if(rectangular[i].w > rectangular[i].h) exchange(i); } sort(rectangular,rectangular+6,cmp);//二级排序把面排序 bool ok = solve(); ok? printf("POSSIBLE\n"):printf("IMPOSSIBLE\n"); }}
0 0
- uva 1587 - Box
- uva 1587 - Box
- UVa 1587 - Box
- UVa 1587 - Box
- UVa 1587 Box
- Uva-1587-Box-AC
- UVA - 1587 Box
- UVa 1587 Box
- Box UVa 1587
- UVA - 1587 Box 麻烦
- UVa 1587 - Box
- UVa 1587 - Box
- UVa-1587 - Box
- UVa 1587 Box
- Uva - 1587 - Box
- UVA - 1587 Box
- UVA 1587 BOX
- UVa 1587 BOX
- php输出xml必须header的解决方法
- 常用经典SQL语句
- 著名整形美容医生采访实录 林秋蓉医生谈激光美容
- PHP读取和编写XML DOM的实现示例
- php中使用DOM类读取XML文件的示例代码
- UVA - 1587 Box
- 抗衰老专访——刘耀美整形医生
- PHP webservice错误:XML error parsing SOAP payload on line 1解决方法
- php下使用SimpleXML 处理XML 文件
- 著名整形美容医生采访实录 严玉秀医生谈综合皮肤管理
- 使用XMLSerialize 序列化与反序列化示例
- 名医访谈录——比华利整形美容医院张敏院长
- 2015LG神秘新机,高通或携LG推新机
- Oracle 常用函数- 字符和数学函数