UVA - 1587 Box

//

当时应该是觉得得理性思考问题 长方体 从元素边开始考虑 所以 只有三种长度的边 即每四条相等的边一组 且每一组的边都来自不同的矩形

//

当时还是用选择排的序 代码冗长 如果是用vector<int> vis[6],代码应该好看一点 附原来blog上的代码

//

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int main()
{
    int a[2],b[2],c[2],d[2],e[2],f[2],A[2],B[2],C[2],D[2],E[2],F[2];
    int Q[2],W[2],R[2],T[2],Z[2],X[2];
    while(scanf("%d%d%d%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&b[0],&b[1],&c[0],&c[1],&d[0],&d[1],&e[0],&e[1],&f[0],&f[1])!=EOF)
    {
    A[0]=a[0];A[1]=a[1];B[0]=b[0];B[1]=b[1];C[0]=c[0];C[1]=c[1];D[0]=d[0];D[1]=d[1];E[0]=e[0];E[1]=e[1];F[0]=f[0];F[1]=f[1];
    Q[0]=a[0];Q[1]=a[1];W[0]=b[0];W[1]=b[1];R[0]=c[0];R[1]=c[1];T[0]=d[0];T[1]=d[1];Z[0]=e[0];Z[1]=e[1];X[0]=f[0];X[1]=f[1];
    int N[12];
    N[0]=a[0];N[1]=a[1];N[2]=b[0];N[3]=b[1];N[4]=c[0];N[5]=c[1];N[6]=d[0];N[7]=d[1];N[8]=e[0];N[9]=e[1];N[10]=f[0];N[11]=f[1];
    int i,j,temp,count=0;
    for(i=0;i<11;i++)
    {
        for(j=i+1;j<12;j++)
        {
            if(N[i]>N[j])
            {
                temp=N[j];
                N[j]=N[i];
                N[i]=temp;
            }
        }
    }
    if(N[0]==N[3]&&N[4]==N[7]&&N[8]==N[11])
    {
        for(i=0;i<=3;i++)
        {
            if(N[i]==a[0]||N[i]==a[1])
            {
                a[0]=0;
                a[1]=0;
                count++;
                continue;
            }
            if(N[i]==b[0]||N[i]==b[1])
            {
                b[0]=0;
                b[1]=0;
                count++;
                continue;
            }
            if(N[i]==c[0]||N[i]==c[1])
            {
                c[0]=0;
                c[1]=0;
                count++;
                continue;
            }
            if(N[i]==d[0]||N[i]==d[1])
            {
                d[0]=0;
                d[1]=0;
                count++;
                continue;
            }
            if(N[i]==e[0]||N[i]==e[1])
            {
                e[0]=0;
                e[1]=0;
                count++;
                continue;
            }
            if(N[i]==f[0]||N[i]==f[1])
            {
                f[0]=0;
                f[1]=0;
                count++;
                continue;
            }
        }
        if(count==4)
        {
            for(i=4;i<=7;i++)
            {
              if(N[i]==A[0]||N[i]==A[1])
              {
                  A[0]=0;
                  A[1]=0;
                  count++;
                  continue;
              }
              if(N[i]==B[0]||N[i]==B[1])
              {
                  B[0]=0;
                  B[1]=0;
                  count++;
                  continue;
              }
              if(N[i]==C[0]||N[i]==C[1])
              {
                  C[0]=0;
                  C[1]=0;
                  count++;
                  continue;
              }
              if(N[i]==D[0]||N[i]==D[1])
              {
                  D[0]=0;
                  D[1]=0;
                  count++;
                  continue;
              }
              if(N[i]==E[0]||N[i]==E[1])
              {
                  E[0]=0;
                  E[1]=0;
                  count++;
                  continue;
              }
              if(N[i]==F[0]||N[i]==F[1])
              {
                  F[0]=0;
                  F[1]=0;
                  count++;
                  continue;
              }
            }
        }
        if(count==8)
        {
            for(i=8;i<=11;i++)
            {
                if(N[i]==Q[0]||N[i]==Q[1])
                {
                    Q[0]=0;
                    Q[1]=0;
                    count++;
                    continue;
                }
                if(N[i]==W[0]||N[i]==W[1])
                {
                    W[0]=0;
                    W[1]=0;
                    count++;
                    continue;
                }
                if(N[i]==R[0]||N[i]==R[1])
                {
                    R[0]=0;
                    R[1]=0;
                    count++;
                    continue;
                }
                if(N[i]==T[0]||N[i]==T[1])
                {
                    T[0]=0;
                    T[1]=0;
                    count++;
                    continue;
                }
                if(N[i]==X[0]||N[i]==X[1])
                {
                    X[0]=0;
                    X[1]=0;
                    count++;
                    continue;
                }
                if(N[i]==Z[0]||N[i]==Z[1])
                {
                    Z[0]=0;
                    Z[1]=0;
                    count++;
                    continue;
                }
            }
        }

    }
    if(count==12)
        printf("POSSIBLE\n");
    else
        printf("IMPOSSIBLE\n");
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值