矩阵乘法

来源:互联网 发布:怎么参加淘宝嘉年华 编辑:程序博客网 时间:2024/05/17 01:26

一.原题:

这里写图片描述
拿到题目之后,突然忘了之前学的线性代数的乘法,然后百度了一下,如下图:
这里写图片描述
简而言之就是横乘竖然后相加
技巧:不难看出,组成C11的三组相乘的数中,a的i和b的j没有变,而a的j和b的i都稳定增长1

二.源代码:

#include <stdio.h>#include <string.h>#define N 100int A[N][N],t[N][N],r[N][N];int main(){    int n,m,i,j,k;    scanf("%d%d",&n,&m);    for(i=0;i<n;i++)        for(j=0;j<n;j++)            scanf("%d",&A[i][j]);    for(i=0;i<n;i++)         r[i][i]=1;//单位矩阵,如同数的乘法中的1    while(m--)//总共循环m次    {        memset(t,0,sizeof(t));        for(i=0;i<n;i++)            for(j=0;j<n;j++)                for(k=0;k<n;k++)                    t[i][j]+=r[i][k]*A[k][j];        for(i=0;i<n;i++)            for(j=0;j<n;j++)                r[i][j]=t[i][j];    }    for(i=0;i<n;i++)    {        for(j=0;j<n-1;j++)            printf("%d ",r[i][j]);          printf("%d\n",r[i][j]);     }    system("pause");    return 0;}

三.运行结果

这里写图片描述

0 0
原创粉丝点击