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();
}

 

posted @ 2017-08-21 22:15  Draymonder  阅读(213)  评论(0编辑  收藏  举报