51nod 1137 矩阵乘法
Posted Draymonder
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51nod 1137 矩阵乘法相关的知识,希望对你有一定的参考价值。
基本的矩阵乘法
中间for(int j=0;i<n;i++) //这里写错了 应该是j<n 晚上果然 效率不行
等会早点儿睡
//矩阵乘法 就是 两个矩阵 第一个矩阵的列 等与 第二个矩阵的行相同 // 然后ans[i][j] += a[i][k] * b[k][j]; #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 150; int n; ll a[maxn][maxn]; class Matrix { public: ll s[maxn][maxn]; Matrix() { memset(s,0,sizeof(s)); } Matrix(ll a[maxn][maxn]) { for(int i=0;i<n;i++) for(int j=0;j<n;j++) s[i][j] = a[i][j]; } void print() { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(j) cout<<" "; cout<<s[i][j]; } cout<<endl; } } }; Matrix operator *(Matrix a,Matrix b) { Matrix ans; for(int i=0;i<n;i++) for(int j=0;j<n;j++) for(int k=0;k<n;k++) ans.s[i][j] = (ans.s[i][j] + a.s[i][k] * b.s[k][j]); return ans; } int main() { cin>>n; for(int i=0;i<n;i++) for(int j=0;j<n;j++) cin>>a[i][j]; Matrix A(a); for(int i=0;i<n;i++) for(int j=0;j<n;j++) cin>>a[i][j]; Matrix B(a); Matrix ans = A*B; ans.print(); }
以上是关于51nod 1137 矩阵乘法的主要内容,如果未能解决你的问题,请参考以下文章
使用 openmp 并行化矩阵乘法并使用 avx2 进行矢量化