算法竞赛入门经典(第二版)3-10盒子UVA-1587

#include<stdio.h>
#include<string.h>
int main()
{

    while(1) 
    {        
        int  a[6][2]; 
        for(int i=0;i<6;i++)
        {                
        scanf("%d%d",&a[i][0],&a[i][1]);                
            }    
int flag=0;
int j=1;
    for(;j<6;j++)
{       //printf("the zero\n");
        if((a[0][0]==a[j][0]&&a[0][1]==a[j][1])||(a[0][0]==a[j][1]&&a[0][1]==a[j][0]))//寻找第一组相等的宽和高 
    {
        //printf("the one\n");
        int k=0; 
            for(;k<6;k++)
       {    //printf("a[k][0]=%d",a[k][0]);
               //printf(" a[0][1]=%d\n",a[0][1]);
            if(a[k][0]==a[0][1]||a[k][0]==a[0][0]&&k!=0&&k!=j)//判断是否有符合条件的下一组 
            {
                //printf("the two\n");
                int m=0;
                for(;m<6;m++)
                {
                    //printf("a[m][0]=%d",a[m][0]);
                       //printf(" a[k][0]=%d\n",a[k][0]);
                       //printf("a[m][1]=%d",a[m][1]);
                       //printf(" a[k][1]=%d\n\n",a[k][1]);
                    if(a[m][0]==a[k][1]&&a[m][1]==a[k][0]||a[m][0]==a[k][0]&&a[m][1]==a[k][1]&&m!=k) //寻找第二组相等的宽和高 
                {
                    //printf("the three\n");
                    int sum=0;
                    for(int n=0;n<6;n++)
                    {   
                        if(a[n][0]==a[k][1]&&a[n][1]==a[0][0]||a[n][0]==a[0][0]&&a[n][1]==a[k][1])//寻找第三组相等的宽和高
                        {
                            sum++;                                                     
                        }
                        //else {flag=1;break;}                    
                    }
                    if(sum>=2){ printf("POSSBILE");flag=2;break;    } else{    flag=1;break;}                
                }
                else if(flag==1){break;}   
               }
               if(m==6) {flag=1;break;}                            
           }
            if(flag==2){break;}
               else if(flag==1){break;}
        }
    if(k==6) {flag=1;break;}
   }
 if(flag==2){break;}
}

if(j==6) {flag=1;}

if(flag==1) {printf("IMPOSSIBLE");} 
}
}

感觉写的太复杂了,看上去很乱,应该有更加简洁的方法,找时间再修改吧

https://vjudge.net/problem/UVA-1587

猜你喜欢

转载自www.cnblogs.com/lytuser/p/11710582.html