蓝桥杯——矩形拼接

矩形拼接

题目分析

对于一个矩形而言,我可以把它横着放,而可以把它竖着放,比如下图,

3个矩形的拼接情况可以通过在纸上画图模拟出来,情况有以下三种

​ 图1

图3是4条边,即四边形。观察一下什么时候会是四边形,假设先放下第一个矩形,如果后放的第二个矩形和第三个矩形横着的边长加起来恰好等于第一个矩形的边长,并且第二个矩形的竖着的边长和第三个矩形的竖着的边长恰好相等。

​ 图2

图2有6条边,即六边形。观察一下什么时候会是六边形,假设先放下第一个矩形,如果后放的第二个矩形和第三个矩形横着的边长加起来恰好等于第一个矩形的边长,但是第二个矩形的竖着的边长和第三个矩形的竖着的边长不恰好相等。

​ 图3

图1有8条边,即八边形。观察一下什么时候会是八边形,假设先放下第一个矩形,如果后放的第二个矩形和第三个矩形横着的边长加起来不恰好等于第一个矩形的边长,并且第二个矩形的竖着的边长和第三个矩形的竖着的边长不恰好相等。

//a[1][0]存的是第一个矩形的横向边长,a[1][1]存的是第一个矩形的竖向边长,
if(a[i][ii] == a[j][jj] + a[k][kk]){//这里i表示第1个矩形,j表示第2个矩形,k表示第3个矩形
    //ii,jj,kk是矩形的横向边长 
          ans = min(ans, 6);//如果第二个矩形和第三个矩形横着的边长加起来恰好等于第一个矩形的边长,那么至少能够拼成一个六边形
          if(a[j][1-jj] == a[k][1-kk])//此时,如果第二个矩形的竖着的边长和第三个矩形的竖着的边长恰好相等那么可以拼成一个四边形
          ans = min(ans, 4);
}

​ 图4

//如果第二个矩形和第三个矩形横着的边长加起来不恰好等于第一个矩形的边长,但是
if(a[i][ii] == a[j][jj] || a[j][jj] == a[k][kk])//如果第一个矩形和第二个矩形横着的边长相等,或者第二个矩形横着的边长和第三个矩形横着的边长相等,那么至少能够拼成一个六边形,如上图
      ans = min(ans, 6);

​ 图5

if(a[i][ii] == a[j][jj] && a[j][jj] == a[k][kk])//如果第一个矩形和第二个矩形横着的边长相等,并且第二个矩形横着的边长和第三个矩形横着的边长相等,那么可以拼成一个四边形
      ans = min(ans, 4);

下面的代码是依次遍历3个矩形,每个矩形作为上图1,2,3中的第一个矩形或者第二个矩形或者第三个矩形考虑

//a[0][0]存的是第一个矩形的横向边长,a[0][1]存的是第一个矩形的竖向边长,
//a[1][0]存的是第一个矩形的横向边长,a[1][1]存的是第一个矩形的竖向边长,
//a[2][0]存的是第一个矩形的横向边长,a[2][1]存的是第一个矩形的竖向边长,
for(int i = 0; i <= 2; i++)               //第1个矩形
        for(int j = 0; j < 3; j++)
            if(i != j)                       //第2个矩形
               for(int k = 0; k < 3; k++)
                   if(k != i && k != j)     //第3个矩形
题目代码
#include<bits/stdc++.h>
using namespace std;
int a[3][2];
int main(){
    int T;    cin >> T;
    while(T--)    {
        for(int i = 0; i < 3; i++)
            cin >> a[i][0] >> a[i][1];
        int ans = 8;
        for(int i = 0; i < 3; i++)               //第1个矩形
            for(int j = 0; j < 3; j++)
                if(i != j)                       //第2个矩形
                    for(int k = 0; k < 3; k++)
                        if(k != i && k != j)     //第3个矩形
                            for(int ii = 0; ii <= 1; ii++){           //第1个有横竖两种摆法
                                for(int jj = 0; jj <= 1; jj++){       //第2个横竖摆
                                    for(int kk = 0; kk <= 1; kk++){   //第3个横竖摆
                                        if(a[i][ii] == a[j][jj] + a[k][kk]){ 
                                            ans = min(ans, 6);
                                            if(a[j][1-jj] == a[k][1-kk])
                                                ans = min(ans, 4);
                                        }
                                        if(a[i][ii] == a[j][jj] || a[j][jj] == a[k][kk])
                                            ans = min(ans, 6);
                                        if(a[i][ii] == a[j][jj] && a[j][jj] == a[k][kk])
                                            ans = min(ans, 4);
                                    }
                                }
                            }
        cout<<ans<<endl;
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/439593.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

邮件api有哪些作用?使用API发邮件的方法?

邮件api接口发信的流程&#xff1f;如何使用邮件API发送邮件&#xff1f; 在现代的数字化社会&#xff0c;电子邮件成为了人们日常生活和工作中不可或缺的一部分。为了提高邮件处理的效率和自动化程度&#xff0c;邮件API的应用越来越广泛。那么&#xff0c;邮件API究竟有哪些…

FMEA视角下的未来:拥抱变化,探索无限可能!

在快速发展的现代社会中&#xff0c;预测未来变得越来越具有挑战性。FMEA&#xff08;失效模式与影响分析&#xff09;作为一种预防性质量工具&#xff0c;虽然主要用于评估产品设计或过程中的潜在故障&#xff0c;但其核心理念——识别风险、预防失误&#xff0c;同样适用于我…

使用anaconda管理多python版本环境

anaconda使用 安装 下载地址 miniconda anaconda 两者区别 Miniconda只包含了conda和Python&#xff0c;以及一些必要的依赖项&#xff0c;它的安装文件较小&#xff0c;占用空间较少&#xff0c;用户可以根据需要自行安装其他的包。Anaconda包含了conda、Python和超过150…

Android应用界面

概述&#xff1a;由于学校原因&#xff0c;估计会考&#xff0c;曹某人就浅学一下。 View概念 安卓中的View是所有UI控件的基类&#xff0c;它代表着屏幕上的一个矩形区域&#xff0c;用于展示数据和接收用户事件。 UI控件的基础&#xff1a;在Android开发中&#xff0c;Vie…

SpringCloud 微服务架构编码构建

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第一篇&#xff0c;即不使用 SpringCloud 组件进行模块之间的调用&#xff0c;后续会有很多的文章循序渐…

12.WEB渗透测试-Linux系统管理、安全加固(下)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;11.WEB渗透测试-Linux系统管理、安全加固&#xff08;上&#xff09;-CSDN博客 Linux任务…

(二十二)从零开始搭建k8s集群——高可用kubernates集群搭建上篇

前言 本节内容分为上、中、下三篇&#xff0c;上篇主要是关于搭建k8s的基础环境&#xff0c;包括服务器基本环境的配置&#xff08;网络、端口、主机名、防火墙、交换分区、文件句柄数等&#xff09;、docker环境部署安装配置、镜像源配置等。中篇会介绍k8s的核心组件安装、k8…

STM32 学习10 PWM输出

STM32 学习10 PWM输出 一、PWM简介1. PWM的概念2. PWM的工作原理3. PWM 常用的应用场景 二、一些概念1. 频率2. 占空比 三、STM32F1 PWM介绍1. 定时器与寄存器&#xff08;1&#xff09;**自动重装载寄存器&#xff08;ARR&#xff09;**&#xff1a;&#xff08;2&#xff09;…

商业前端TS开发自动化工具

本期作者 一、背景 商业侧的业务比较复杂&#xff0c;B端项目中含有大量常量类的类型判断&#xff0c;且因历史原因&#xff0c;很多常量值前端无法直接知其含义&#xff0c;这既不利于新人的上手&#xff0c;也不利于项目的维护。 在开发协作上&#xff0c;前后端的API沟通&a…

面向对象中类与对象

思考系统1000个对象逻辑结构 理解系统1000个对象物理结构 对象this 引用 类的静态变量和静态函数 静态变量和静态函数属于类本身&#xff0c;而不是类的实例。它们可以在不创建类的实例的情况下直接通过类名访问。静态变量在内存中只有一份拷贝&#xff0c;被所有实例共享&…

人工智能(AI)与电网系统的结合

人工智能&#xff08;AI&#xff09;与电网系统的结合可以带来许多潜在的好处&#xff0c;包括提高电网的运行效率、安全性和可靠性。以下是一些主要的应用领域&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交…

基于SSM的环境监测管理系统设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 主要技术和工具介绍 3 1.1 SSM框架简介 3 1.1.1 Spring 3 1.1.2 Mybatis 数据持久化技术 3 1.1.3 SpringMVC 3 1.2 MySQL数据简介 4 1.3 本章小结 4 2 系统分析 5 2.1 需求分析 5 2.1.1 功能分析 5 2.1.2 用例说明 6 2.2 可行性分析 9 2.…

深度学习与机器学习:互补共进,共绘人工智能宏伟蓝图

在人工智能的广阔天地中&#xff0c;深度学习与机器学习如同两支强大的队伍&#xff0c;各自闪耀着独特的光芒&#xff0c;却又携手共进&#xff0c;共同书写着智能的辉煌篇章。尽管深度学习是机器学习的一个分支&#xff0c;但它们在模型构建、特征提取以及应用场景等多个方面…

Linux基础IO【 详 解 】

文章目录 C语言文件IOC语言文件接口汇总默认打开的三个流 系统文件IOopenclosewriteread 文件描述符fd文件描述符的分配规则重定向重定向的本质dup2 FILEFILE当中的文件描述符FILE当中的缓冲区 理解文件系统初识inode磁盘分区与格式化介绍 软硬链接软链接硬链接软硬链接的区别 …

【动态规划】二维费用的背包问题

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;【LeetCode】winter vacation training 目录 &#x1f449;&#x1f3fb;一和零 &#x1f449;&#x1f3fb;一…

外汇天眼科普:什么是场内交易和场外交易?

场内交易 又称交易所交易&#xff0c;指所有的供求方集中在交易所进行竞价交易的交易方式。 这种交易方式具有交易所向交易参与者收取保证金、同时负责进行清算和承担履约担保责任的特点。 此外&#xff0c;由于每个人都有不同的需求&#xff0c;交易所事先设计出标准化的金融…

C++ Qt开发:QFileSystemModel文件管理组件

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍如何运用QFileSystemModel组件实现文件管理器…

Redis冲冲冲——Redis分布式锁如何实现

目录 引出Redis分布式锁如何实现Redis入门1.Redis是什么&#xff1f;2.Redis里面存Java对象 Redis进阶1.雪崩/ 击穿 / 穿透2.Redis高可用-主从哨兵3.持久化RDB和AOF4.Redis未授权访问漏洞5.Redis里面安装BloomFilte Redis的应用1.验证码2.Redis高并发抢购3.缓存预热用户注册验证…

广播

1.什么是广播 2.标准广播 BroadStandardActivity.java package com.tiger.chapter09;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.view.View;…

OPC UA 学习:文件传输

本博文是OPC 10000-20: UA Part 20: File Transfer 的学习笔记。 客户端需要读写服务器端的文件&#xff0c;OPCUA 规范中&#xff0c;是通过文件模型实现的。客户端通过调用文件模型中的方法来处理文件。 文件类型 文件类型&#xff08;FileType&#xff09;的属性 属性 文…