解题思路:三个方块各自横竖放的情形有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 人评分
C语言程序设计教程(第三版)课后习题8.4 (Java代码)浏览:732 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)浏览:541 |
【偶数求和】 (C语言代码)浏览:646 |
C语言程序设计教程(第三版)课后习题6.11 (C语言代码)浏览:2080 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:661 |
C语言程序设计教程(第三版)课后习题9.2 (C语言代码)浏览:556 |
a+b浏览:433 |
循环入门练习5 (C语言代码)浏览:839 |
C二级辅导-等差数列 (C语言代码)浏览:695 |
2006年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:669 |