UVA1587 盒子
2020-02-03 02:43
218 查看
此题与UVA253都运用到长方体有对应的三对面,只要按照《一定的顺序》排列,两个对应面的长与宽必然相同。这一点对应判断是否能构成长方体的判断比较关键。
#include<stdio.h> struct node { int w,h; }; int main() { void sort1(struct node *n);//也可以设置为全局变量,避免使用指针 void sort2(struct node a[]); void sort3(struct node a[]); int ok(struct node a[]); struct node a[10]; int i; while(scanf("%d %d",&a[0].h,&a[0].w)>0){ for(i=1;i<6;i++){ scanf("%d %d",&a[i].h,&a[i].w); } for(i=0;i<6;i++){ sort1(&a[i]); } sort2(a); sort3(a); /* for(i=0;i<6;i++){ printf("%d %d\n",a[i].w,a[i].h); }*/ if(ok(a)) printf("Possible\n"); else printf("Impossible\n"); } return 0; } void sort1(struct node *n) { int temp; if(n->h>n->w){ temp=n->h; n->h=n->w; n->w=temp; } } void sort2(struct node a[]) { int i,j,mark,tempw,temph; for(i=0;i<6;i++){ mark=i; for(j=i+1;j<6;j++){ if(a[mark].h>a[j].h){ mark=j; } } temph=a[i].h; tempw=a[i].w; a[i].h=a[mark].h; a[i].w=a[mark].w; a[mark].h=temph; a[mark].w=tempw; } } void sort3(struct node a[]) { int i,j,mark,tempw,temph; for(i=0;i<6;i++){ mark=i; for(j=i+1;j<6;j++){ if(a[mark].w>a[j].w){ mark=j; } } temph=a[i].h; tempw=a[i].w; a[i].h=a[mark].h; a[i].w=a[mark].w; a[mark].h=temph; a[mark].w=tempw; } } int ok(struct node a[]) { if(a[0].h!=a[1].h || a[0].w!=a[0].w) return 0; if(a[2].h!=a[3].h || a[2].w!=a[3].w) return 0; if(a[4].h!=a[5].h || a[4].w!=a[5].w) return 0; if(a[1].h!=a[3].h) return 0; if(a[1].w!=a[5].h) return 0; if(a[3].w!=a[5].w) return 0; return 1; }
转载于:https://www.cnblogs.com/ZackBee/p/6379537.html
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- UVa1587--Box--盒子(代码超简洁)
- uva 1587 - Box(盒子)
- UVa1587 盒子
- UVa 1587 盒子
- uva 1587 盒子
- 【算法竞赛入门经典】习题3-10 盒子(Box,ACM/ICPC NEERC 2004,UVa 1587)
- UVa1587 盒子
- 盒子 UVa 1587
- UVA-3.10-盒子-1587
- UVa1587 盒子
- 盒子Box UVA1587
- 盒子(uva-1587)
- UVa1587 盒子
- UVa1587 盒子
- UVA 1587 BOX 盒子 六个面构成长方体
- 习题3-10 盒子 UVa1587
- 【解题报告】uva103_Stacking Boxes(堆砌盒子, dp)
- 3-10 uva 1587 box
- uva 1587 - Box
- UVa 1587 - Box