您的位置:首页 > 其它

UVA1587 UVALive3214 POJ2160 Box

2016-08-01 20:56 519 查看
Regionals 2004 >> Europe - Northeastern

问题链接:UVA1587 UVALive3214 POJ2160 Box

问题简述:给出六组整数,问能否构成六面体。

这个题用C语言做的毫无技术含量,也许用C++来写会好一些。



AC的C语言程序如下:

/* UVA1587 UVALive3214 POJ2160 Box */

#include <stdio.h>

#define MAXN 6

struct {
int w, h;
int count;
} a[MAXN];
int acount;

void swap(int n)
{
if(a
.w > a
.h) {
int temp = a
.w;
a
.w = a
.h;
a
.h = temp;
}
}

int checkok()
{
if(a[0].w == a[1].w && a[0].h == a[2].w && a[1].h == a[2].h)
return 1;
else if(a[0].w == a[1].w && a[0].h == a[2].h && a[1].h == a[2].w)
return 1;
else if(a[0].w == a[1].h && a[0].h == a[2].w && a[1].w == a[2].h)
return 1;
else if(a[0].w == a[1].h && a[0].h == a[2].h && a[1].w == a[2].w)
return 1;
else if(a[0].h == a[1].w && a[0].w == a[2].w && a[1].h == a[2].h)
return 1;
else if(a[0].h == a[1].w && a[0].w == a[2].h && a[1].h == a[2].w)
return 1;
else if(a[0].h == a[1].h && a[0].w == a[2].w && a[1].w == a[2].h)
return 1;
else if(a[0].h == a[1].h && a[0].w == a[2].h && a[1].w == a[2].w)
return 1;
else
return 0;
}

int main(void)
{
int i, j;

while(scanf("%d%d", &a[0].w, &a[0].h) != EOF) {
a[0].count = 1;
swap(0);

acount = 1;
for(i=1; i<MAXN; i++) {
scanf("%d%d", &a[acount].w, &a[acount].h);
a[acount].count = 1;
swap(acount);

/* 去重复 */
for(j=0; j<acount; j++)
if(a[j].w == a[acount].w && a[j].h == a[acount].h && a[j].count != 2) {
a[j].count++;
acount--;
break;
}
acount++;
}

if(acount != 3)
printf("IMPOSSIBLE\n");
else if(checkok())
printf("POSSIBLE\n");
else
printf("IMPOSSIBLE\n");
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: