解题思路:因为只有三个矩形拼接,所以只用考虑三个矩形摆放的位置,有几种情况,最坏的结果是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语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复