企业网站管理系统下载,住房,h5培训,长春师范大学文章目录
C翻转矩阵幂 一、C翻转IO链接
本题思路:本题需要找出顺时针旋转和逆时针旋转的规律#xff0c;然后就可以解决该问题。
矩阵顺时针90旋转规律:列号变为行号#xff0c;(n-行号-1)变为列号 规律:a[i][j]b[j][n-i1];
矩阵逆时针90旋转规律:行号变为列号#xff0… 文章目录
C翻转矩阵幂 一、C翻转IO链接
本题思路:本题需要找出顺时针旋转和逆时针旋转的规律然后就可以解决该问题。
矩阵顺时针90°旋转规律:列号变为行号(n-行号-1)变为列号 规律:a[i][j]b[j][n-i1];
矩阵逆时针90°旋转规律:行号变为列号(n-行号1)变为行号规律:a[i][j]b[n-j1][i];
#include bits/stdc.hconstexpr int N8;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 i0;i5;i)for(int j0;j5;j)std::cing[i][j];int op,n;//op代表是往哪个方向进行旋转n表示旋转的个数int x,y;std::cinopnxy;//顺时针if(op1){for(int i0;in;i)for(int j0;jn;j)//列号变为行号(n-行号-1)变为列号 规律:a[i][j]b[j][n-i1];tmp[j][i]g[x-1n-1-i][y-1j];}//逆时针else if(op2){for(int i0;in;i)for(int j0;jn;j)//行号变为列号(n-行号1)变为行号规律:a[i][j]b[n-j1][i];tmp[n-1-j][i]g[x-1i][y-1j];}for(int i0;in;i)for(int j0;jn;j)g[ix-1][jy-1]tmp[i][j];for(int i0;i5;i){for(int j0;j5;j)std::coutg[i][j] ;std::coutstd::endl;}return 0;
}
二、矩阵幂IO链接
本题思路:本题是矩阵乘法的模板题矩阵乘法中第一个矩阵的列要等于第二个矩阵的行
一个m∗n的的A矩阵和一个n∗p的B矩阵相乘将得到一个m∗p的矩阵C 。 #include bits/stdc.hconstexpr int N15;int n,k;
int g[N][N],p[N][N];
int tmp[N][N];void mul()
{memset(tmp,0,sizeof tmp);for(int i1;in;i)for(int j1;jn;j){int sum0;for(int k1;kn;k)//矩阵的乘法第一个矩阵的列需要与第二个矩阵的行相乘sumg[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::cinnk;for(int i1;in;i)for(int j1;jn;j)std::cing[i][j];memcpy(p,g,sizeof(g));for(int j1;jk;j) mul();for(int i1;in;i){for(int j1;jn;j)std::coutg[i][j] ;std::coutstd::endl;}return 0;
}