蓝桥杯打卡Day8


文章目录

  • C翻转
  • 矩阵幂

一、C翻转IO链接

**本题思路:**本题需要找出顺时针旋转和逆时针旋转的规律,然后就可以解决该问题。

矩阵顺时针90°旋转规律:列号变为行号,(n-行号-+1)变为列号 规律:a[i][j]=b[j][n-i+1];

矩阵逆时针90°旋转规律:行号变为列号,(n-行号+1)变为行号,规律:a[i][j]=b[n-j+1][i];

cpp 复制代码
#include <bits/stdc++.h>

constexpr int N=8;

int g[N][N];
int tmp[N][N];//用来存储旋转后的数组元素

int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);std::cout.tie(nullptr);
    
    for(int i=0;i<5;i++)
        for(int j=0;j<5;j++)
            std::cin>>g[i][j];
    
    int op,n;//op代表是往哪个方向进行旋转,n表示旋转的个数
    int x,y;
    
    std::cin>>op>>n>>x>>y;
    
    //顺时针
    if(op==1){
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++)//列号变为行号,(n-行号-+1)变为列号 规律:a[i][j]=b[j][n-i+1];
                tmp[j][i]=g[x-1+n-1-i][y-1+j];
    }
    
    //逆时针
    else if(op==2){
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++)//行号变为列号,(n-行号+1)变为行号,规律:a[i][j]=b[n-j+1][i];
                tmp[n-1-j][i]=g[x-1+i][y-1+j];
    }
    
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            g[i+x-1][j+y-1]=tmp[i][j];
    
    for(int i=0;i<5;i++){
        for(int j=0;j<5;j++)
            std::cout<<g[i][j]<<" ";
        std::cout<<std::endl;
    }
    
    return 0;
}

二、矩阵幂IO链接

**本题思路:**本题是矩阵乘法的模板题,矩阵乘法中第一个矩阵的列要等于第二个矩阵的行

一个m∗n的的A矩阵,和一个n∗p的B矩阵相乘,将得到一个m∗p的矩阵C 。

cpp 复制代码
#include <bits/stdc++.h>

constexpr int N=15;

int n,k;
int g[N][N],p[N][N];
int tmp[N][N];

void mul()
{
    memset(tmp,0,sizeof tmp);
    
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++){
            int sum=0;
            for(int k=1;k<=n;k++)//矩阵的乘法:第一个矩阵的列需要与第二个矩阵的行相乘
                sum+=g[i][k]*p[k][j];
            tmp[i][j]=sum;
        }
    memcpy(g,tmp,sizeof(tmp));
}

int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);std::cout.tie(nullptr);
    
    std::cin>>n>>k;
    
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            std::cin>>g[i][j];
    
    memcpy(p,g,sizeof(g));
    for(int j=1;j<k;j++) mul();
    
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++)
            std::cout<<g[i][j]<<" ";
        std::cout<<std::endl;
    }
    return 0;
}
相关推荐
小龙报1 小时前
《DevC++支持C++11等与其软件分辨率低的解决办法》
c语言·c++·windows·蓝桥杯·pat考试·学习方法·dvc++
程序员小远4 小时前
软件测试之bug分析定位技巧
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·bug
Kuo-Teng4 小时前
LeetCode 19: Remove Nth Node From End of List
java·数据结构·算法·leetcode·链表·职场和发展·list
Kuo-Teng4 小时前
LeetCode 21: Merge Two Sorted Lists
java·算法·leetcode·链表·职场和发展
元亓亓亓6 小时前
LeetCode热题100--39. 组合总和
算法·leetcode·职场和发展
橘颂TA6 小时前
【剑斩OFFER】算法的暴力美学——寻找数组的中心下标
算法·leetcode·职场和发展·结构与算法
Kuo-Teng8 小时前
LeetCode 141. Linked List Cycle
java·算法·leetcode·链表·职场和发展
·云扬·9 小时前
【LeetCode Hot 100】 136. 只出现一次的数字
算法·leetcode·职场和发展
Aldrich_3217 小时前
蓝桥杯嵌入式赛道—-软件篇(GPIO输出模式配置)
c语言·vscode·stm32·单片机·嵌入式硬件·蓝桥杯
hnjzsyjyj18 小时前
洛谷 P12141:[蓝桥杯 2025 省 A] 红黑树
数据结构·蓝桥杯·二叉树