UVA 1587 Box

题意:每组输入三对整数,看能否拼成一个Box,输出结果。

思路:就用大小为6的数组常和宽,存放这些数据,然后按w和h排序。

先循环比较w[i]和w[i+1]、h[i]和h[i+1]是否相等,然后比较特定的值是否相等。

画个图就可以看出,其实可以简化为3组数据,而且他们满足w0=w1,w2=h0,h1=h2。

比如:

1345 2584
2584 683
2584 1345
683 1345
683 1345
2584 683
排序后:
w[0]=683 h[0]=1345
w[1]=683 h[1]=1345
w[2]=683 h[2]=2584
w[3]=683 h[3]=2584
w[4]=1345 h[4]=2584
w[5]=1345 h[5]=2584
 
 1 #include "stdio.h"
 2 #include "stdlib.h"
 3 #include "string.h"
 4 int main()
 5 {
 6     int n=0,i,j,k;
 7     int w[6],h[6],width,height,ex;
 8     while(scanf("%d%d",&width,&height)==2)
 9     {
10         if(width<height)
11         {
12              w[n]=width;
13              h[n]=height;
14         }
15         else
16         {
17             w[n]=height;
18             h[n]=width;
19         }
20         n++;
21         if(n==6)
22         {
23 //            for(j=0;j<6;j++)
24 //            printf("w[%d]=%d h[%d]=%d\n",j,w[j],j,h[j]);
25            for(i=0;i<6;i++)
26            {
27                for(j=i;j<6;j++)
28                {
29                    if(w[i]>w[j])
30                    {
31                        ex=w[i];
32                        w[i]=w[j];
33                        w[j]=ex;
34                        ex=h[i];
35                        h[i]=h[j];
36                        h[j]=ex;
37                    }
38                    else if(w[i]==w[j]&&h[i]>h[j])
39                    {
40                        ex=h[i];
41                        h[i]=h[j];
42                        h[j]=ex;
43                    }
44                }
45            }
46 //           for(j=0;j<6;j++)
47 //            printf("w[%d]=%d h[%d]=%d\n",j,w[j],j,h[j]);
48            for(i=0;i<6;i=i+2)
49            {
50                if((w[i]!=w[i+1])||(h[i]!=h[i+1]))
51                     break;
52            }
53            if(i>=6)
54            {
55                 if(w[0]==w[2]&&w[5]==h[0]&&h[2]==h[5])
56                     printf("POSSIBLE\n");
57                 else
58                     printf("IMPOSSIBLE\n");
59            }
60            else
61                 printf("IMPOSSIBLE\n");
62             n=0;
63         }
64     }
65     return 0;
66 }

 

posted @ 2019-01-19 21:37  付玬熙  阅读(78)  评论(0编辑  收藏  举报