UVA - 1587 Box

来源:互联网 发布:javascript 延迟 编辑:程序博客网 时间:2024/05/02 04:44

//

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

//

当时还是用选择排的序 代码冗长 如果是用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");    }}


0 0
原创粉丝点击