解题思路:三个方块各自横竖放的情形有2种,也就是一共2*2*2=8种情形。从左到右(因为从下到上等价于8种中的其它情形从左到右)排列方块,接下来就是几个简单的讨论而已。
注意事项:
参考代码:
#include<bits/stdc++.h>
using namespace std;
#define fir first
#define sec second
#define pii pair<int,int>
int t;
int a[10];
int ans=12345678;
pair<int,int> pair1[5];
bool cmp(pii &x,pii &y){
return x.fir>y.fir;
}
int getans(int a1,int b1,int a2,int b2,int a3,int b3){
pair1[1].fir=a1;
pair1[1].sec=b1;
pair1[2].fir=a2;
pair1[2].sec=b2;
pair1[3].fir=a3;
pair1[3].sec=b3;
sort(pair1+1,pair1+3+1,cmp);//按长从大到小排列
a1=pair1[1].fir;
b1=pair1[1].sec;
a2=pair1[2].fir;
b2=pair1[2].sec;
a3=pair1[3].fir;
b3=pair1[3].sec;
if(a1==a2&&a2==a3)return 4;
if(a1==a2||a2==a3)return 6;
if(a1==a2+a3){
if(b2==b3){
return 4;
}
else{
return 6;
}
}
if(b2==b3){
return 6;
}
return 8;
}
int main(){
scanf("%d",&t);
while(t--){
ans=12345678;
scanf("%d%d%d%d%d%d",&a[1],&a[2],&a[3],&a[4],&a[5],&a[6]);
int a1,b1,a2,b2,a3,b3;
for(int i=1;i<=2;i++){
a1=a[i];b1=a[1+2-i];
for(int j=3;j<=4;j++){
a2=a[j];b2=a[3+4-j];
for(int k=5;k<=6;k++){
a3=a[k];b3=a[5+6-k];
ans=min(ans,getans(a1,b1,a2,b2,a3,b3));
}
}
}
printf("%d\n",ans);
}
return 0;
}
0.0分
4 人评分
【求[X,Y]内被除3余1并且被除5余3的整数的和】 (C语言代码)浏览:677 |
母牛的故事 (C语言代码)浏览:1429 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:476 |
IP判断 (C语言描述,蓝桥杯)浏览:1096 |
母牛的故事 (C语言代码)浏览:552 |
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:678 |
1035 题解浏览:786 |
剪刀石头布 (C++代码)浏览:1719 |
C二级辅导-公约公倍 (C语言代码)浏览:485 |
C二级辅导-阶乘数列 (C语言代码)浏览:522 |