51Nod-1137-矩阵乘法

来源:互联网 发布:配眼镜测得数据的意思 编辑:程序博客网 时间:2024/05/18 20:12

51Nod-1137-矩阵乘法

                1137 矩阵乘法给出2个N * N的矩阵M1和M2,输出2个矩阵相乘后的结果。Input第1行:1个数N,表示矩阵的大小(2 <= N <= 100)第2 - N + 1行,每行N个数,对应M1的1行(0 <= M1[i] <= 1000)第N + 2 - 2N + 1行,每行N个数,对应M2的1行(0 <= M2[i] <= 1000)Output输出共N行,每行N个数,对应M1 * M2的结果的一行。Input示例21 00 10 11 0Output示例0 11 0

解题方法

对于矩阵,python可以设置一个矩阵类来对矩阵进行相关操作,用重载运算符号进行矩阵乘法。
当然,直接用numpy库里提供的矩阵算法更简单省事。
python的重载运算符可以看这一篇博客——Python中类的运算符重载


解题代码

class Mat:    #初始化矩阵的大小    def __init__(self, n):        self.n = n        self.mat = []    #向矩阵输入值    def Cin(self):        for _ in range(self.n):            self.mat.append(list(map(int, input().split())))    #输出矩阵的值    def Cout(self):        for i in self.mat:            print(*i)    #乘法运算符重载,other是另外的矩阵    def __mul__(self, other):        ans = Mat(self.n)        for i in range(self.n):            tmp = []            for j in range(self.n):                x = 0                for k in range(self.n):                    x += self.mat[i][k]*other.mat[k][j]                tmp.append(x)            ans.mat.append(tmp)        return answhile True:    try:        N = int(input())        a = Mat(N)        b = Mat(N)        a.Cin()        b.Cin()        a = a*b        a.Cout()    except EOFError:        break
原创粉丝点击