#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