刷题活动(旋转和翻转)

news2024/11/25 4:42:51

        前两天打了CCPC网络赛(让打老实了),现在认识到了刷题的重要性,于是我开创了这么个栏目,我们一起刷一下题。

        还是在ACwing网站上刷题 旋转和翻转 

        首先,申一下题目,输入一个数字 n ,来表示矩阵的行和列,之后输入两个矩阵,判断一下两个矩阵相互能否通过旋转和翻转来相互转换。如果能,输出Yes,否则输出No。

        如果没有见过翻转和旋转的题目,可能会发懵,面对一个矩阵,它可能进行多次运动得到另一个矩阵,我们不能通过运动的层次去分析这道题,这样分析有无限种可能,我们要从状态来分析,比如一个矩阵  

         它通过旋转可以得到四种状态,通过翻转加旋转又可以得到四种状态,所以总共就是八种状态,(这里我插进来图片不太好看,大家可以自己手写一下,写一下就很容易就明白了),在题中,如果我们可以一一找出输入的第一个矩阵的八种状态,并对于第二个矩阵做对比,如果有和第二个矩阵相同的,就输出Yes,否则输出No。

        代码如下:

#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
using namespace std;

int n;
vector<string> a,b;

vector<string> flip(vector<string> a){
    for(int i = 0; i < n ; i ++ ){
        for(int j = 0, k = n - 1; j < k ; j ++, k --){
            swap(a[i][j],a[i][k]);
        }
    }
    return a;
}

vector<string> rotate(vector<string> a){
    a = flip(a);
    for(int i = 0; i < n ;i ++ ){
        for(int j = 0; j < i ; j ++ ){
            swap(a[i][j], a[j][i]);
        }
    }
    return a;
}

bool check(){
    for(int i = 0; i < 4 ; i ++ ){
        a = rotate(a);
        if(a == b) return true;
    }
    a = flip(a);
    for(int i = 0; i < 4 ; i ++ ){
        a = rotate(a);
        if(a == b) return true;
    }
    return false;
}

int main(){
    cin >> n;
    a = b = vector<string>(n);
    for(int i = 0; i < n ; i ++ ) cin >> a[i];
    for(int i = 0; i < n ; i ++ ) cin >> b[i];
    if(check()) cout << "Yes" <<endl;
    else cout << "No" << endl;
    return 0;
}

        在这个代码中,最重要的就是翻转 flip 和旋转 rotate 这两个操作,flip 理解起来比较简单,就是左右的字符对换了一下位置,比如abcd1234efgh这个矩阵,就变成了下面这样,以中间为对称轴,来对换。

        至于旋转,我们是先进行左右翻转操作,再进行以对角线为对称轴进行翻转,以达到旋转90度的目的,再举一个例子

        实在不行的话,可以随便找一本书来手动翻转试一下,很有意思的现象。

        另外还要注意,这里我们是用vector字符数组来存储的,希望大家习惯用这种方式,好处在于,可以比较方便地进行输入,以及支持二位数组,支持swap交换函数。

        好,下课

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux | 进程控制(上):进程终止(strerror函数、errno宏、_exit() 与 exit())

文章目录 进程控制1、进程终止1.1进程常见退出方法退出码1.1.1 strerror函数 & errno宏1.1.1 _exit函数_exit和exit的区别结合现象分析&#xff1a; 进程控制 1、进程终止 1.1进程常见退出方法 进程退出场景 代码运行完毕&#xff0c;结果正确代码运行完毕&#xff0c;结…

计算机网络 数据链路层 3

以太网&#xff1a;采用CSMA/CD载波监听多路访问/冲突检测 基带总线局域网规范 以太网提供无连接&#xff0c;不可靠服务&#xff1a; 无连接&#xff1a;事先不必建立链路 不可靠&#xff1a;发送方的数据帧不进行编号&#xff0c;接收方接收信息后不向发送方发送ACK&#x…

深度神经网络DNN、RNN、RCNN及多种机器学习金融交易策略研究|附数据代码

全文链接&#xff1a;https://tecdat.cn/?p37668 原文出处&#xff1a;拓端数据部落公众号 分析师&#xff1a;Aijun Zhang 在当今的金融领域&#xff0c;量化交易正凭借其科学性和高效性逐渐成为主流投资方式之一。随着大数据技术的蓬勃发展&#xff0c;量化交易借助先进…

en造数据结构与算法 c#语言 数组实现队列很难???看我一击破之!!!

队列的特点就是先入先出 这回不像栈那样只需要瞄准最后一个坑了 你要入队的话&#xff0c;肯定要加到最后一个坑上&#xff0c;所以要守住最后一个坑 但是&#xff0c;你只有最后一个坑的标记还不行&#xff0c;因为出队你得退出第一个坑不是么 public class SimpleQueue<…

前端开发之迭代器模式

在前端开发中&#xff0c;设计模式是提升代码可读性、可扩展性和可维护性的关键。迭代器模式&#xff08;Iterator Pattern&#xff09;是行为型设计模式中的一种&#xff0c;能够让我们顺序访问一个集合中的元素&#xff0c;而不暴露其底层的结构。在 TypeScript 这样具有类型…

空间解析几何 1 :空间中直线、圆、椭圆的方程表示

所谓空间解析几何&#xff0c;就是在三维空间中&#xff0c;求两个图形的空间关系&#xff0c;如距离&#xff0c;夹角&#xff0c;这一张给出常用的三个图形&#xff0c;直线&#xff0c;圆&#xff0c;椭圆的空间方程&#xff0c;后面会经常用到。 下一章&#xff1a;空间解析…

APP渗透思路小记

免责声明:本文仅做分享! 目录 协议 反代理 反证书 真实手机抓包: 1-查看本地pc 的 ip. 2-打开bp,配置 ip 及 端口. 3-手机设置代理: 4-手机访问 ip:port 5-安装证书 检查抓包 模拟器抓包: 开源移动端扫描工具 mobsf AppinfoScanner Frida r0capture proxifier…

新能源汽车 BMS 学习笔记篇——如何选择继电器 MOS 管作为开关

序&#xff1a;继电器和 MOSFET&#xff08;俗称 MOS 管&#xff09;都可以用作 BMS&#xff08;Battery Management System&#xff0c;电池管理系统&#xff09; 中控制电池充放电的开关&#xff0c;但它们在原理、结构和特性上存在一些区别&#xff0c;以下总结它们之间主要…

如何本地部署Ganache并使用内网穿透配置公网地址远程连接测试网络

目录 前言 1. 安装Ganache 2. 安装cpolar 3. 创建公网地址 4. 公网访问连接 5. 固定公网地址 作者简介&#xff1a; 懒大王敲代码&#xff0c;计算机专业应届生 今天给大家聊聊如何本地部署Ganache并使用内网穿透配置公网地址远程连接测试网络&#xff0c;欢迎大家点赞 &a…

rocm Linpack 编译构建系统解析

0. 购买amd显卡&#xff0c;安装rocm 1, 编译 rocHPL 下载源码&#xff1a; $ git clone --recursive https://github.com/ROCm/rocHPL.git 编译&#xff1a; $ cd rocHPL/ $ ./install.sh --prefix${PWD}/../local/ 会自动 git clone blit,ucx,opempi, $ ./mpirun_rochpl …

【hot100-java】【接雨水】

R8-双指针篇 转战java后端的第一天&#xff0c;学点java语法&#xff08;手动狗头&#xff09; 这题之前写过多种解法 下面我们使用前后缀分离法解决。 class Solution {public int trap(int[] height) {int n height.length;//表示height[0]到height[i]的最大值int[] pre…

【mechine learning-七-线性回归之成本函数】

监督学习之cost function 成本函数权重、偏置如何实现拟合数据成本函数是如何寻找出来w和b&#xff0c;使成本函数值最小化&#xff1f; 在线性回归中&#xff0c;我们说到评估模型训练中好坏的一个方法&#xff0c;是用成本函数来衡量&#xff0c;下面来详细介绍一下 成本函数…

3D技术在电商独立站中的应用有哪些?

3D技术在电商独立站中的应用日益广泛&#xff0c;为电商行业带来了全新的商品展示方式和购物体验。以下是3D技术在电商独立站中的具体应用及其带来的优势&#xff1a; 一、商品3D展示 1、沉浸式体验&#xff1a; 通过3D技术&#xff0c;商品可以在独立站上以三维形式呈现&…

Word 脚注与正文之间的空行怎么删除啊?

全网都搜索不到解决方案&#xff0c;难道只有我一个人遇到这个问题了吗&#xff1f; 无语&#xff0c;。、;

9月12日的学习

练习 #include "widget.h" #include "ui_widget.h" QListWidgetItem *p; Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget),socket(new QTcpSocket(this))//给客户端指针实例化空间及关联父组件 {ui->setupUi(this);//初始化,ui-…

学习大数据DAY56 业务理解和第一次接入

作业1 1 了解行业名词 ERP CRM OA MES WMS RPA SAAS 了解每个系统的功能和应用 ERP 系统&#xff0c;&#xff08;Enterprise Resource Planning&#xff0c;企业资源计划系统&#xff09;&#xff1a;ERP 系统 是一种用于管理企业各类资源的软件系统&#xff0c;包括生产管理…

2024年软件测试经典大厂面试题(全3套)【包含答案】

前言 金三银四即将过去&#xff0c;后面迎来的便是金九银十&#xff0c;一直想着说分享一些软件测试的面试题&#xff0c;这段时间做了一些收集和整理&#xff0c;下面共有三篇经典面试题&#xff0c;大家可以试着做一下&#xff0c;答案附在后面&#xff0c;希望能帮助到大家。…

STM32——玩转超声波传感器

目录 1.什么是超声波&#xff1f; 超声波的基本特点&#xff1a; 2.超声波传感器介绍&#xff1a;HC-SR04 HC-SR04 主要特点&#xff1a; HC-SR04 接线如下&#xff1a; HC-SR04 工作原理&#xff1a; 如何编写超声波测距代码&#xff1f; 编写逻辑&#xff1a; 编写思…

【2024】前端学习笔记4-图像标记

在 HTML 中&#xff0c;<img>标签用于在网页中插入图像。 基本语法&#xff1a; <img src"图像文件地址" alt"替代文本">src&#xff1a;指定图片的路径&#xff0c;可以是相对路径、绝对路径。alt&#xff1a;为图像提供代替文本&#xff0…

9.12日常记录

1.extern关键字 1&#xff09;诞生动机:在一个C语言项目中&#xff0c;需要再多个文件中使用同一全局变量或是函数&#xff0c;那么就需要在这些文件中再声明一遍 2&#xff09;用于声明在其他地方定义的一个变量或是函数&#xff0c;在当前位置只是声明&#xff0c;告诉编译器…