解题思路:因为只有三个矩形拼接,所以只用考虑三个矩形摆放的位置,有几种情况,最坏的结果是8个边,最好的结果有4个边,中等结果有6个边
注意事项:
参考代码:
static int[][] a=new int[3][2];//定义矩形空间
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int T = scanner.nextInt();
while (T--!=0) {
//输入三个矩形的长和宽
for (int i = 0; i < 3; i++){
a[i][0]= scanner.nextInt();//保存矩形
a[i][1]= scanner.nextInt();
}
int ans = 8; //完全不匹配时的答案为8
for (int i = 0; i < 3; i++) { //枚举第一个矩形
for (int j = 0; j < 3; j++) {
if (i != j) { //枚举第二个矩形
for (int k = 0; k < 3; k++) {
if (i != k && j != k) { //枚举第三个矩形
for (int ii = 0; ii <= 1; ii++) { //枚举第一个矩形的长宽
for (int jj = 0; jj <= 1; jj++) { //枚举第二个矩形的长宽
for (int kk = 0; kk <= 1; kk++) //枚举第三个矩形的长宽
{
//第一个矩形的长等于后两个矩形的长之和
if (a[i][ii] == a[j][jj] + a[k][kk]) {
ans =Math.min(ans, 6);
//后面两个矩形的宽相等
if (a[j][1 - jj] == a[k][1 - kk])
ans = Math.min(ans, 4);
}
//三个矩形的长全部相等
if (a[i][ii] == a[j][jj] && a[i][ii] == a[k][kk]) {
ans = Math.min(ans, 4);
}
//至少有一个矩形的长和第一个矩形的长相等
if (a[i][ii] == a[j][jj] || a[i][ii] == a[k][kk]) {
ans = Math.min(ans, 6);
}
}
}
}
}
}
}
}
}
System.out.println(ans);
}
}
}
0.0分
2 人评分
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:885 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:487 |
printf基础练习 (C语言代码)浏览:1958 |
小O的图案 (C语言代码)浏览:968 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:740 |
1005答案错误为什么浏览:1986 |
1250题解浏览:591 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:437 |
1074(纳闷了,答案错误,求指教)浏览:375 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:465 |