码迷,mamicode.com
首页 > 其他好文 > 详细

51nod 1137 矩阵乘法

时间:2017-08-21 23:04:20      阅读:337      评论:0      收藏:0      [点我收藏+]

标签:name   memset   style   c++   end   return   color   mem   相同   

基本的矩阵乘法

中间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 矩阵乘法

标签:name   memset   style   c++   end   return   color   mem   相同   

原文地址:http://www.cnblogs.com/Draymonder/p/7406988.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!