UVa 1587 - Box

来源:互联网 发布:网络和函授有什么区别 编辑:程序博客网 时间:2024/05/02 00:45

做了很久了,终于AC了!!!    刚开始思路出现了问题,只判断了是否有三对相等的面,一直没找到bug,后来在网上搜了12几组测试用例,发现有一组测试用例输出结果不对,这才发现了程序还有bug,没用很久就有了新思路,我的思路是在保证有三对面相等的基础上,再对长方体的三个面的边长进行限制,分8种情况, 自己知道很麻烦,但还是写出来了,当提交AC之后,太激动了!         水平还是太水, 慢慢练吧!

#include<stdio.h>#include <string.h>#include <ctype.h>int main(){         int  i,j,k,r,s,t,m,n,z,x,c;         int a[10][10]={0},b[10][10]={0},d[10]={0};         while(scanf("%d %d",&a[1][1],&a[1][2]) != EOF)         {                 r=0; s=2000;                for(i=2; i<=6; i++)                      for(j=1; j<=2; j++)                            scanf("%d",&a[i][j]);                for(i=1; i<=6; i++)                       for(j=1; j<=2; j++)                             b[i][j]=a[i][j];                for(i=1; i<=6; i++)                {                       for(j=i+1; j<=6; j++)                       {                               if(  (a[i][1] == a[j][1]  && a[i][2] == a[j][2] )   ||  (  a[i][1] == a[j][2]  && a[i][2] == a[j][1]  )     )                                  {                                        a[i][1]=a[j][1]=a[i][2]=a[j][2]=s;         s++;                                        d[++r]=i;                                        break;                                  }                       }                }                z=d[1];    x=d[2];    c=d[3];                 if     ( b[z][1]==b[c][2] && b[z][2] == b[x][1] && b[x][2]== b[c][1] && r==3   )                        printf("POSSIBLE\n");                 else if (  b[z][1] == b [c][1] && b[z][2] == b[x][1] && b[x][2] == b[c][2] && r==3  )                        printf("POSSIBLE\n");                 else if (  b[z][1] == b [c][2] && b[z][2] == b[x][2] && b[x][1] == b[c][1]&&r==3  )                        printf("POSSIBLE\n");                 else if (  b[z][1] == b [c][1] && b[z][2] == b[x][2] && b[x][1] == b[c][2] &&r==3  )                        printf("POSSIBLE\n");                 else if (  b[z][1] == b [x][1] && b[z][2] == b[c][2] && b[x][2] == b[c][1]  &&r==3   )                        printf("POSSIBLE\n");                 else if ( b[z][1] == b [x][1] && b[z][2] == b[c][1] && b[x][2] == b[c][2]  &&r==3  )                        printf("POSSIBLE\n");                 else if (  b[z][1] == b [x][2] && b[z][2] == b[c][2] && b[x][1] == b[c][1]&&r==3  )                        printf("POSSIBLE\n");                 else if ( b[z][1] == b [x][2] && b[z][2] == b[c][1] && b[x][1] == b[c][2] &&r==3   )                        printf("POSSIBLE\n");                 else                        printf("IMPOSSIBLE\n");                memset(a,0,sizeof(a));                memset(b,0,sizeof(b));                memset(d,0,sizeof(d));         }         return 0;}


0 0
原创粉丝点击