zoukankan      html  css  js  c++  java
  • POJ 3318-Matrix Multiplication (n方求矩阵相乘相等)

    题意

    有3个n*n的矩阵A,B,C,问AB是否等于C。

    传送门

    思路

    题目描述很简单,就是用矩阵乘法,但是很明显矩阵乘法的时间复杂度为O(n^3),很明显超时。那怎么改进呢?就是用压缩矩阵的方法

    设矩阵R是 1*n 的矩阵,根据矩阵的性质,若 A * B * R = C * R,那么A * B = C。由此可以看出来,虽然多成了一个矩阵,但是时间复杂度成了(O(n^2))。那么问题是这个R的行列式该怎么设定,有人用的随机算法,但是随机算法可能在关键点上出现错误,可以将R设定成一个递增的数列({1,2,3…})

    Code

    #include <bits/stdc++.h>
    
    using namespace std;
    
    const int maxn = 510;
    
    int n;
    int ra[maxn], rab[maxn], rc[maxn];
    
    int a[maxn][maxn], b[maxn][maxn], c[maxn][maxn];
    
    bool check() {
        for (int i = 0; i < n; ++i) {
            if(rab[i] != rc[i]) return false;
        }
        return true;
    }
    
    int main() {
        while(scanf("%d", &n)==1) {
            for (int i = 0; i < n; ++i) for (int j = 0; j < n; ++j) scanf("%d", &a[i][j]);
            for (int i = 0; i < n; ++i) for (int j = 0; j < n; ++j) scanf("%d", &b[i][j]);
            for (int i = 0; i < n; ++i) for (int j = 0; j < n; ++j) scanf("%d", &c[i][j]);
    
            for (int i = 0; i < n; ++i) ra[i] = rab[i] = rc[i] = 0;
    
            for (int i = 0; i < n; ++i) {
                for (int j = 0; j < n; ++j)
                    ra[i] += a[j][i]*(j+1);
            }
    
    //        for (int i = 0; i < n; ++i) printf("%d ", ra[i]); puts("");
    
            for (int i = 0; i < n; ++i) {
                for (int j = 0; j < n; ++j)
                    rab[i] += ra[j]*b[j][i];
            }
    
            for (int i = 0; i < n; ++i) {
                for (int j = 0; j < n; ++j)
                    rc[i] += c[j][i]*(j+1);
            }
    //        for (int i = 0; i < n; ++i) printf("%d ", rc[i]); puts("");
    
            puts(check()? "YES": "NO");
        }
        return 0;
    }
    
  • 相关阅读:
    C# 获取电脑SN号
    Windows 使用ffmpeg将MP4视频转换为m3u8格式
    C# 创建或打开TXT文件并逐行写入
    Dictionary通过下标获取key和value
    Winfrom 连接考勤机设备时界面假死
    Win 10操作系统快捷键
    SQL Server 2008 在表中插入新的字段
    什么是CSR
    Sql Server中的事务隔离级别
    Web验证方式(4)--JWT
  • 原文地址:https://www.cnblogs.com/acerkoo/p/11618834.html
Copyright © 2011-2022 走看看