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

news2024/11/17 23:44:09

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

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

本博客带大家一起学习,我们不图快,只求稳扎稳打。
由于我高三是在家自学的,经验教训告诉我,学习一定要长期积累,并且复习,所以我推出此系列。
只求每天坚持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;
}

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

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

相关文章

一文读懂原生应用与混合应用

大家对于原生应用和混合应用已经非常熟悉了&#xff0c;这里就不再进行详细的介绍&#xff0c;用通俗易懂的话解释下他们的一些特点。 1、原生应用 在 Android、iOS 等移动平台上利用提供的开发语言、开发类库、开发工具进行 App 软件开发。比如 Android 是用 Java、Eclipse、…

日撸代码300行:第59天(数值型数据的 NB 算法)

代码来自闵老师”日撸 Java 三百行&#xff08;51-60天&#xff09;“&#xff0c;链接&#xff1a;https://blog.csdn.net/minfanphd/article/details/116975957 相较于符号型数据&#xff0c;数值型是将实例的概率密度带入进行概率计算。数值型数据仅需要对决策属性那里进行…

Vue 基础语法(二)

一、背景&#xff1a; 我们对于基础语法&#xff0c;说白了就是实现元素赋值&#xff0c;循环&#xff0c;判断&#xff0c;以及事件响应即可&#xff01; 二、v-bind 我们已经成功创建了第一个 Vue 应用&#xff01;看起来这跟渲染一个字符串模板非常类似&#xff0c;但是 V…

性能测试/负载测试/压力测试之间的区别

做测试一年多来&#xff0c;虽然平时的工作都能很好的完成&#xff0c;但最近突然发现自己在关于测试的整体知识体系上面的了解很是欠缺&#xff0c;所以&#xff0c;在工作之余也做了一些测试方面的知识的补充。不足之处&#xff0c;还请大家多多交流&#xff0c;互相学习。 …

全网最细,性能测试-接口压测 Locust固件实战,从0到1进阶...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 python如何进行性…

基于YOLOv5的S弯识别

基于YOLOv5的S弯识别 目录 基于YOLOv5的S弯识别技术背景算法介绍具体实现1、下载仓库2、配置环境3、数据处理4、转成engine文件5、使用代码实现识别 技术总结 技术背景 S弯识别是一个在自动驾驶和机器人领域中很常见的任务&#xff0c;它需要识别道路上的弯道&#xff0c;特别…

springboot+mybatis-flex初体验

mybatis作为一款应用非常广泛的持久层框架&#xff0c;随之又出现了mybatis的增强框架。mybatis的增强框架就是在mybatis 的基础上又添加了许多的功能&#xff0c;目的就是为简化开发&#xff0c;提供效率而生。mybatis-plus就是一款很流行的增加框架&#xff0c;在 mybatis-pl…

小程序学习(四):WXML模板语法

WXML模板语法-数据绑定 1.数据绑定的基本原则 ①在data中定义数据 ②在WXML中使用数据 2.动态绑定属性 WXML模板语法-事件绑定 3.什么是事件 4.小程序中常用的事件 5.事件对象的属性列表 6.target和currentTarget的区别 7.bindtap的语法格式 8.在事件处理函数中为data中的数据…

华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(六)

系列文章目录 个人简介&#xff1a;机电专业在读研究生&#xff0c;CSDN内容合伙人&#xff0c;博主个人首页 Python面试专栏&#xff1a;《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读&#xff0c;一起进步&#xff01;&#x1f31f;&#x1f31f;&#x1f31f; …

校园跑腿小程序功能分享

提起校园跑腿小程序大家都不陌生&#xff0c;尤其是对上大学的伙伴们来说,更是熟悉得不能再熟悉了&#xff0c;和我们的生活息息相关&#xff0c;密不可分。 对于现在的年轻人来说&#xff0c;网购是非常简单和方便的一种购物方式&#xff0c;随之快递也会越来越多。在我们国家…

rancher2使用helm部署harbor,搭建私有镜像/helm仓库

接上一篇《rancher2安装nfs-subdir-external-provisioner为PVC/PV动态提供存储空间&#xff08;动态分配卷&#xff09;》 本篇开始讲如何在rancher2中部署harbor&#xff0c;来搭建一个私有的镜像/helm仓库。 一、安装harbor服务 1. 在目标集群中添加命名空间 2. 将提供harb…

Elbie勒索病毒的最新威胁:如何恢复您的数据?

导言&#xff1a; 在数字时代的浩瀚网络中&#xff0c;隐藏着一支不为人知的黑暗势力&#xff0c;他们的代表之一就是臭名昭著的Elbie勒索病毒。这个神秘的数字幽灵似乎无所不能&#xff0c;几乎每个人都可能成为它的牺牲品。本文91数据恢复将揭示Elbie勒索病毒的背后故事&…

数据结构-链表结构-单向链表

链表结构 说到链表结构就不得不提起数据结构&#xff0c;什么是数据结构&#xff1f;就是用来组织和存储数据的某种结构。那么到底是某种结构呢&#xff1f; 数据结构分为&#xff1a; 线性结构 数组&#xff0c;链表&#xff0c;栈&#xff0c;队列 树形结构 二叉树&#x…

零基础玩转C语言—结构体【初阶】

大家好&#xff0c;我是深鱼~ 目录 【前言】&#xff1a; 一、结构体的声明 1.1结构的基本知识 1.2结构的声明 1.3结构体成员的类型 1.4结构体变量的定义和初始化 二、结构体成员的访问 【前言】&#xff1a;本章来介绍结构体的部分知识&#xff0c;并不会深入讲解&…

webstorm格式化代码后单引号转成了双引号

webStorm格式化js代码时单引号变成了双引号&#xff0c;问题如下&#xff1a; 格式化前&#xff1a; 格式化后&#xff1a; 解决办法&#xff1a; window: File -> Settings -> Editor -> Code Style -> Javascript&#xff1b; mac: webStorm -> Preference …

了解回归测试吗?今天给大家详解一下回归测试

测试工作中&#xff0c;新人对于测试流程、测试方法都有可以直接拿来用的教材&#xff0c;但是对于回归测试中的bug处理的细节&#xff0c;往往需要我们更多的经历才能更好的完成自己的工作&#xff0c;下面我们来谈一谈回归测试bug的处理中需要关注的点&#xff1a; 一、什么…

Docker 镜像解密:分层存储与镜像构建原理

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

国内办公协作系统评测:5 款软件推荐

办公协作系统是现代信息化办公的必备工具之一&#xff0c;对于企业来说&#xff0c;选择一款好用的办公协作系统非常重要。然而&#xff0c;在众多的办公协作系统中&#xff0c;哪个好用是一个让人头痛的问题。总体而言&#xff0c;国内的办公协作系统已经相当成熟和完善&#…

基于linux下的高并发服务器开发(第四章)- 多线程实现并发服务器

>>了解文件描述符 文件描述符分为两类&#xff0c;一类是用于监听的&#xff0c;一类是用于通信的&#xff0c;在服务器端既有监听的&#xff0c;又有通信的。而且在服务器端只有一个用于监听的文件描述符&#xff0c;用于通信的文件描述符是有n个。和多少个客户端建立了…

vue 前端一键导出excel文件并附带表格样式

1、安装xlsx、xlsx-style、file-saver三个包 //xlsx与file-saver指定版本安装&#xff0c;解决默认安装utils未定义的问题 npm install --save xlsx0.17.0 npm install --save file-saver2.0.5 npm install xlsx-style --save 2、在使用的页面引入 import XLSX from xlsx //…