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 矩阵乘法的主要内容,如果未能解决你的问题,请参考以下文章

51nod 1137 矩阵乘法

51NOD 1137 矩阵乘法

51nod 1462 树据结构 | 树链剖分 矩阵乘法

使用 openmp 并行化矩阵乘法并使用 avx2 进行矢量化

在矩阵乘法中使用 C++2011 线程而不是 OpenMP 时出现异常加速

51 Nod 1013 3的幂的和 矩阵链乘法||逆元+快速幂