【我们一起60天准备考研算法面试(大全)-第三十天 30/60】【矩阵翻转】【矩阵相乘】

专注 效率 记忆
预习 笔记 复习 做题

欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)
 
文章字体风格:
红色文字表示:重难点★✔
蓝色文字表示:思路以及想法★✔
 
如果大家觉得有帮助的话,感谢大家帮忙
点赞!收藏!转发!

本博客带大家一起学习,我们不图快,只求稳扎稳打。
由于我高三是在家自学的,经验教训告诉我,学习一定要长期积累,并且复习,所以我推出此系列。
只求每天坚持40分钟,一周学5天,复习2天
也就是一周学10道题
60天后我们就可以学完81道题,相信60天后,我们一定可以有扎实的代码基础!我们每天就40分钟,和我一起坚持下去吧!
qq群:878080619

第三十天【考研408-数据结构(笔试)】

  • 二十七、矩阵
    • 1. 旋转矩阵(北京航空航天大学考研机试题)
    • 2. 矩阵幂【矩阵相乘】(北京邮电大学考研机试题)
        • 两个矩阵相乘结果
    • 3. C翻转(北京邮电大学考研机试题)

二十七、矩阵

1. 旋转矩阵(北京航空航天大学考研机试题)

在这里插入图片描述
这道题就是找规律
在这里插入图片描述

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>

using namespace std;

const int N = 10;

int n;

vector<vector<int>> rotate(vector<vector<int>> a)
{
    auto res = a;

    for (int i = 0; i < n; i ++ )
        for (int j = 0, k = n - 1; j < n; j ++, k -- )
            res[i][j] = a[k][i];

    return res;
}

int main()
{
    cin >> n;

    vector<vector<int>> a(n, vector<int>(n));
    auto b = a;

    for (int i = 0; i < n; i ++ )
        for (int j = 0; j < n; j ++ )
            cin >> a[i][j];

    for (int i = 0; i < n; i ++ )
        for (int j = 0; j < n; j ++ )
            cin >> b[i][j];

    for (int i = 0; i < 4; i ++ )
    {
        if (a == b)
        {
            cout << i * 90 << endl;
            return 0;
        }

        a = rotate(a);
    }

    puts("-1");
    return 0;
}

2. 矩阵幂【矩阵相乘】(北京邮电大学考研机试题)

在这里插入图片描述

两个矩阵相乘结果

两个矩阵a,b相乘得到一个新的矩阵c,新矩阵的第i行第j列的元素是a的第i行和b的第j列的对应元素相乘的求和。

    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            for(int k=0;k<n;k++)
                tmp[i][j]+=a[i][k]*b[k][j];

求矩阵的k次方

注意:1次方就是 矩阵乘单位矩阵

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int N=15;
int n,k;
int w[N][N];
// 将矩阵a和b相乘,结果存放到c中。 
void mul(int c[][N],int a[][N],int b[][N]){
    static int tmp[N][N];
    memset(tmp,0,sizeof tmp);
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            for(int k=0;k<n;k++)
                tmp[i][j]+=a[i][k]*b[k][j];
    memcpy(c,tmp,sizeof tmp); 
}

int main(){
    cin>>n>>k;
    // 读入原始矩阵 
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            cin>> w[i][j];
    // 将res初始化为单位矩阵 
    int res[N][N]={0};
    for(int i=0;i<n;i++) res[i][i]=1;
    while(k--) mul(res,res,w);
    // 输出结果矩阵 
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++)
            cout<<res[i][j]<<" ";
        cout<<endl; 
    } 
    return 0;
}

3. C翻转(北京邮电大学考研机试题)

在这里插入图片描述

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 5;

int n;
int g[N][N];

void rotate(int x, int y, int m)
{
    int w[N][N];
    memcpy(w, g, sizeof g);

    for (int i = 0; i < m; i ++ )
        for (int j = 0, k = m - 1; j < m; j ++, k -- )
            w[i][j] = g[x + k][y + i];

    for (int i = 0; i < m; i ++ )
        for (int j = 0; j < m; j ++ )
            g[x + i][y + j] = w[i][j];
}

int main()
{
    for (int i = 0; i < 5; i ++ )
        for (int j = 0; j < 5; j ++ )
            cin >> g[i][j];

    int a, b, x, y;
    cin >> a >> b >> x >> y;
    x --, y -- ;

    if (a == 1) rotate(x, y, b);
    else
    {
        for (int i = 0; i < 3; i ++ )
            rotate(x, y, b);
    }

    for (int i = 0; i < 5; i ++ )
    {
        for (int j = 0; j < 5; j ++ )
            cout << g[i][j] << ' ';
        cout << endl;
    }

    return 0;
}

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

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

相关文章

Eureka 学习笔记4:EurekaClient

版本 awsVersion ‘1.11.277’ EurekaClient 接口实现了 LookupService 接口&#xff0c;拥有唯一的实现类 DiscoveryClient 类。 LookupService 接口提供以下功能&#xff1a; 获取注册表根据应用名称获取应用根据实例 id 获取实例信息 public interface LookupService<…

【C++】反向迭代器的模拟实现通用(可运用于vector,string,list等模拟容器)

文章目录 前言一、反向迭代器封装&#xff08;reverseiterator&#xff09;1.构造函数1解引用操作.3.->运算符重载4.前置&#xff0c;后置5.前置--&#xff0c;后置--6.不等号运算符重载7.完整代码 二、rbegin&#xff08;&#xff09;以及rend&#xff08;&#xff09;1.rb…

ADSelfService Plus:保护密码安全的最佳解决方案

密码安全是当今数字时代中至关重要的话题。随着互联网和信息技术的迅速发展&#xff0c;我们的生活变得越来越数字化&#xff0c;密码已成为我们生活中不可或缺的一部分。然而&#xff0c;随着各种网络威胁和黑客攻击不断增加&#xff0c;保护我们的密码变得越来越重要。 密码安…

linux基础学习

1.day1 1、修改虚拟机的网络&#xff1b; sudo vim /etc/netplan/*.yaml sudo netplan apply 2.day2 1、VIM配置&#xff1b; 2、安装SSH&#xff0c;调用putty接入终端&#xff1b; 3、shell命令&#xff1b; *&#xff1a;匹配任意长度的字符 &#xff1f;&#xff1a;匹…

为什么VPS是中小型企业的理想选择?

对于中小型企业来说&#xff0c;选择适合自身业务需求的托管方案至关重要。在如今数字化时代&#xff0c;VPS作为一种灵活、高性能的托管解决方案&#xff0c;成为中小型企业的理想选择。作为动态VPS代理产品供应商&#xff0c;我们深知一个高质量、高性能的VPS托管服务&#x…

使用IDEA打jar包的详细图文教程

1. 点击intellij idea左上角的“File”菜单 -> Project Structure 2. 点击"Artifacts" -> 绿色的"" -> “JAR” -> Empty 3. Name栏填入自定义的名字&#xff0c;Output ditectory 选择 jar 包目标目录&#xff0c;Available Elements 里右击…

信息安全:网络安全体系 与 网络安全模型.

信息安全&#xff1a;网络安全体系 与 网络安全模型. 网络安全保障是一项复杂的系统工程&#xff0c;是安全策略、多种技术、管理方法和人员安全素质的综合。一般而言&#xff0c;网络安全体系是网络安全保障系统的最高层概念抽象&#xff0c;是由各种网络安全单元按照一定的规…

Failed to load local font resource:微信小程序加载第三方字体

加载本地字体.ttf 将ttf转换为base64格式&#xff1a;https://transfonter.org/ 步骤如下 将下载后的stylesheet.css 里的font-family属性名字改一下&#xff0c;然后引进页面里就行了&#xff0c;全局样式就放app.scss&#xff0c;单页面就引入单页面 注&#xff1a; .title…

12-3_Qt 5.9 C++开发指南_创建和使用静态链接库

第12章中的静态链接库和动态链接库介绍&#xff0c;都是以UI操作的方式进行&#xff0c;真正在实践中&#xff0c;可以参考UI操作产生的代码来实现同样的功能。 文章目录 1. 创建静态链接库1.1 创建静态链接库过程1.2 静态链接库代码1.2.1 静态链接库可视化UI设计框架1.2.2 qw…

关于element ui 安装失败的问题解决方法、查看是否安装成功及如何引入

Vue2引入 执行npm i element-ui -S报错 原因&#xff1a;npm版本太高 报错信息&#xff1a; 解决办法&#xff1a; 使用命令&#xff1a; npm install --legacy-peer-deps element-ui --save 引入&#xff1a; 在main.js文件中引入 //引入Vue import Vue from vue; //引入…

二阶阻尼弹簧系统的simulink仿真(s函数)

文章目录 前言一.非线性反步法1.原系统对应的s函数脚本文件&#xff08;仅修改模板的初始化函数、导数函数和输出函数三个部分&#xff09;2.控制器对应的s函数脚本文件&#xff08;仅修改模板的初始化函数和输出函数两个部分&#xff09;3.其他参数脚本文件4.输入5.输出&#…

成功拿下25K测试岗,原来字节真的很好进

朋友&#xff0c;作为一个曾经从机械转行到IT的行业的过来人&#xff0c;已在IT行业工作4年&#xff0c;分享一下我的经验&#xff0c;供你参考。 讲真&#xff0c;现在想通过培训班培训几个月就进入IT行业&#xff0c;越来越来难了&#xff1b;如果是在2018年以前&#xff0c;…

MyBatis缓存-提高检索效率的利器--一级缓存

&#x1f600;前言 本篇博文是关于MyBatis一级缓存的介绍使用和缓存失效情况分析&#xff0c;希望能够帮助到您&#x1f60a; &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家…

Python入门【__init__ 构造方法和 __new__ 方法、类对象、类属性、类方法、静态方法、内存分析实例对象和类对象创建过程(重要)】(十四)

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小王&#xff0c;CSDN博客博主,Python小白 &#x1f4d5;系列专栏&#xff1a;python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 &#x1f4e7;如果文章知识点有错误…

拯救者Y9000K无线Wi-Fi有时不稳定?该如何解决?

由于不同品牌路由器的性能差异&#xff0c;无法完美兼容最新的无线网卡技术&#xff0c;在连接网络时&#xff08;特别是网络负载较大的情况下&#xff09;&#xff0c;可能会出现Wi-Fi信号断开、无法网络无法访问、延迟突然变大的情况&#xff1b;可尝试下面方法进行调整。 1…

[containerd] 在Windows上使用IDEA远程调试containerd, ctr, containerd-shim

文章目录 1. containerd安装2. 源码编译3. 验证编译的二进制文件是否含有调试需要的信息3.1. objdump工具验证3.2. file工具验证3.3. dlv工具验证 4. debug 1. containerd安装 [Ubuntu 22.04] 安装containerd 2. 源码编译 主要步骤如下&#xff1a; 1、从github下载containe…

八大排序算法--选择排序(动图理解)

选择排序 算法思路 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待排序的数据元素排完 。 选择排序的步骤&#xff1a; 1>首先在未排序序列中找到最小&#xff08;大&#xff09;元素…

pytorch深度学习快速入门

放弃个人素质 享受缺德人生 拒绝精神内耗 有事直接发疯 一、安装Anaconda 官网下载地址 选择适合的系统版本进行安装即可 安装完之后&#xff0c;可以看到下面的内容 二、使用Anaconda创建开发环境 这也是为什么要使用Anaconda的原因&#xff0c;可以创建不同的开发环境&am…

【ChatGPT辅助学Rust | 基础系列 | Hello, Rust】编写并运行第一个Rust程序

文章目录 前言一&#xff0c;创建项目二&#xff0c;两种编译方式1. 使用rustc编译器编译2. 使用Cargo编译 总结 前言 在开始学习任何一门新的编程语言时&#xff0c;都会从编写一个简单的 “Hello, World!” 程序开始。在这一章节中&#xff0c;将会介绍如何在Rust中编写并运…

微信小程序 居中、居右、居底和横向、纵向布局,文字在图片中间,网格布局

微信小程序居中、居右、横纵布局 1、水平垂直居中&#xff08;相对父类控件&#xff09;方式一&#xff1a;水平垂直居中 父类控件&#xff1a; display: flex;align-items: center;//子控件垂直居中justify-content: center;//子控件水平居中width: 100%;height: 400px //注意…