UVa 1587 - Box

下午上Acm课看不清投影,就看了了看书,这道题感觉还能简单点,就回来先做了,交了三次Ac的,第一次是忽略了第一个长方形的长宽不在后来的循环里,没有进行大小交
换,第二次是没有删除调试用的输出数组b值的语句。。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <stdio.h>
#include <string.h>
int main()
{
int i,j,temp,k,l,x,count;
int a[6][2];
int b[6];
int c[6][2];
while(scanf("%d%d",&a[0][0],&a[0][1])!=EOF)
{
if(a[0][0]>a[0][1])
{
temp=a[0][0];
a[0][0]=a[0][1];
a[0][1]=temp;
}
x=1,count=0;
memset(b,0,sizeof(b));
c[0][0]=c[0][1]=0;
for(i=1;i<6;i++)
{
scanf("%d%d",&a[i][0],&a[i][1]);
c[i][0]=c[i][1]=0;
if(a[i][0]>a[i][1])
{
temp=a[i][0];
a[i][0]=a[i][1];
a[i][1]=temp;
}
}
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
for(k=0;k<2;k++)
{
if(a[i][k]==a[j][0]&&i!=j)
c[i][k]++;
if(a[i][k]==a[j][1]&&i!=j)
c[i][k]++;
}
if(a[i][0]==a[j][0]&&a[i][1]==a[j][1]&&i!=j)
b[i]++;
}
if(a[i][0]==a[i][1])
count++;
}
if(count==0&&b[0]==5)
x=0;
if(count>2&&c[0][0]!=10)
x=0;
for(i=0;i<6;i++)
{
if(!x)
goto END;
if(!b[i])
x=0;
for(j=0;j<2;j++)
if(c[i][j]<3)
x=0;
}
END:
if(x)
printf("POSSIBLE\n");
else
printf("IMPOSSIBLE\n");
}
return 0;
}

本文迁移自我的 CSDN博客 ,格式可能有所偏差。