解题思路:因为只有三个矩形拼接,所以只用考虑三个矩形摆放的位置,有几种情况,最坏的结果是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.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论