UVA 1587 Box
题意:每组输入三对整数,看能否拼成一个Box,输出结果。
思路:就用大小为6的数组常和宽,存放这些数据,然后按w和h排序。
先循环比较w[i]和w[i+1]、h[i]和h[i+1]是否相等,然后比较特定的值是否相等。
画个图就可以看出,其实可以简化为3组数据,而且他们满足w0=w1,w2=h0,h1=h2。
比如:
1345 2584
2584 683
2584 1345
683 1345
683 1345
2584 683
排序后:
w[0]=683 h[0]=1345
w[1]=683 h[1]=1345
w[2]=683 h[2]=2584
w[3]=683 h[3]=2584
w[4]=1345 h[4]=2584
w[5]=1345 h[5]=2584
w[1]=683 h[1]=1345
w[2]=683 h[2]=2584
w[3]=683 h[3]=2584
w[4]=1345 h[4]=2584
w[5]=1345 h[5]=2584
1 #include "stdio.h" 2 #include "stdlib.h" 3 #include "string.h" 4 int main() 5 { 6 int n=0,i,j,k; 7 int w[6],h[6],width,height,ex; 8 while(scanf("%d%d",&width,&height)==2) 9 { 10 if(width<height) 11 { 12 w[n]=width; 13 h[n]=height; 14 } 15 else 16 { 17 w[n]=height; 18 h[n]=width; 19 } 20 n++; 21 if(n==6) 22 { 23 // for(j=0;j<6;j++) 24 // printf("w[%d]=%d h[%d]=%d\n",j,w[j],j,h[j]); 25 for(i=0;i<6;i++) 26 { 27 for(j=i;j<6;j++) 28 { 29 if(w[i]>w[j]) 30 { 31 ex=w[i]; 32 w[i]=w[j]; 33 w[j]=ex; 34 ex=h[i]; 35 h[i]=h[j]; 36 h[j]=ex; 37 } 38 else if(w[i]==w[j]&&h[i]>h[j]) 39 { 40 ex=h[i]; 41 h[i]=h[j]; 42 h[j]=ex; 43 } 44 } 45 } 46 // for(j=0;j<6;j++) 47 // printf("w[%d]=%d h[%d]=%d\n",j,w[j],j,h[j]); 48 for(i=0;i<6;i=i+2) 49 { 50 if((w[i]!=w[i+1])||(h[i]!=h[i+1])) 51 break; 52 } 53 if(i>=6) 54 { 55 if(w[0]==w[2]&&w[5]==h[0]&&h[2]==h[5]) 56 printf("POSSIBLE\n"); 57 else 58 printf("IMPOSSIBLE\n"); 59 } 60 else 61 printf("IMPOSSIBLE\n"); 62 n=0; 63 } 64 } 65 return 0; 66 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步