UVA1587 UVALive3214 POJ2160 Box

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[n].w > a[n].h) {
        int temp = a[n].w;
        a[n].w = a[n].h;
        a[n].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;
}
时间: 2024-07-29 22:35:37

UVA1587 UVALive3214 POJ2160 Box的相关文章

UVA1587 BOX盒子

给定矩形的长和宽,判断它们能否构成长方体的六个面 1 #include<iostream> 2 #include<string> 3 using namespace std; 4 int t; 5 void change(int a[7][3]) //输入两个数字,按顺序:小,大:排列. 6 { 7 for (int k = 1; k <= 6; k++) 8 if (a[k][1] > a[k][2]) 9 { 10 t = a[k][1]; 11 a[k][1] =

BOX (UVA-1587)

对比一下代码的书写差距: 我的代码: 1 #include<iostream> 2 3 using namespace std; 4 5 int a[6]; 6 int b[6]; 7 int v[3]; //访问标记 8 9 bool judge(int i, int j) 10 { 11 if(a[i]==a[j]&&b[i]==b[j]) 12 return true; 13 return false; 14 } 15 16 bool judge1() 17 { 18 i

UVa1587 Box

#include <iostream>#include <algorithm>#include <set>using namespace std; int main(){    set<int> s; // 12个数字中不能出现3个以上不同的值,最多只有三种值:长.宽.高    int face[6];    int i = 0, w, h;    while (cin >> w >> h)    {        if (s.siz

UVa 1587 Box 盒子

这道题的链接:https://vjudge.net/problem/UVALive-3214 给定6个矩形的长和宽wi与hi(1<=wi, hi<=1000), 判断它们能否构成长方体的6个面 Sample Input 1345 2584 2584 683 2584 1345 683 1345 683 1345 2584 683 1234 4567 1234 4567 4567 4321 4322 4567 4321 1234 4321 1234 Sample Output POSSIBLE

Windows10 使用Virtual Box一启动虚拟机就蓝屏(错误代码SYSTEM_SERVICE_EXCEPTION)解决方案

原文:Windows10 使用Virtual Box一启动虚拟机就蓝屏(错误代码SYSTEM_SERVICE_EXCEPTION)解决方案 一打开虚拟机电脑就立马蓝屏重启,新建虚拟机也没用,然后就开始百度,百度上全说什么驱动不对,然后我就卸载升级各种驱动,然后各种重装VirtualBox,还是不行,搞了一两个小时,都快放弃了.决定上个google,终于看到一篇文章说是因为Hyper-V与Virtual Box冲突了,只需要在控制面板关闭就行.然后抱着试一试的心态. 首先我们先打开控制面板.按Wi

CloudFoundry in 1 Box简介:PCF-Dev篇

在<CloudFoundry in 1 Box简介:Bosh-lite篇>我们介绍了Bosh-lite的架构和部署.在本篇中,我们将详细描述另一个CloudFoundry in 1 Box解决方案PCF-Dev. 1PCF-dev简介 PCF是Pivotal发行的Cloud Foundry商业版,PCF-Dev原名MicroPCF,是Pivotal为PCF的应用开发人员准备的一款App单虚拟机版的CloudFoundry.但是,麻雀虽小,五脏俱全.PCF-Dev虽然可以在仅仅一台虚拟式上即可运

CodeForces 388A Fox and Box Accumulation 贪心

Fox Ciel has n boxes in her room. They have the same size and weight, but they might have different strength. The i-th box can hold at most xi boxes on its top (we'll call xi the strength of the box). Since all the boxes have the same size, Ciel cann

poj1442(Black Box)

题目地址:Black Box 题目大意: 有一个黑盒子可以进行两种操作,一种是ADD往盒子里存数,一种是GET查找盒子里的第几个数,默认盒子里始终是从小到大排列,然后A(1).A(2)....A(M)为要存进盒子的数,u(1).u(2).....u(N)的数并不是取出第几个数,而这里u(N)存的数是插入几个A(M)到盒子里去,这里有一个P(1 <= p <= N) 和u是同序列的.输出 p-minimum number from our A(1), A(2), ..., A(u(p)) seq

Flexible Box布局基础知识详解

1.基本概念,借用阮一峰老师的一张图: 容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis).主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end:交叉轴的开始位置叫做cross start,结束位置叫做cross end. 项目默认沿主轴排列.单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size. 2.容器的基本属性 flex-direction flex-wrap flex-flow j