一般矩阵乘法实现
题目描述1
给定m×k的布尔矩阵A,和k×n的布尔矩阵B,求布尔矩阵的乘积AB。
源代码1
#include<stdio.h>
int main()
{
int i,j,t,m,n,k,a[100][100]={0},b[100][100]={0},c[100][100]={0};
scanf("%d%d%d",&m,&k,&n);
for(i=0;i<m;i++)
{
for(j=0;j<k;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<k;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&b[i][j]);
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
for(t=0;t<k;t++)
{
c[i][j]+=a[i][t]*b[t][j];
}
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",c[i][j]);
}
printf("\n");
}
return 0;
}
矩阵的n次幂的实现
题目描述2
给定布尔矩阵方阵A,给定n,求A的n次幂。
源代码2
#include<stdio.h>
#define N 100
int mult(int a[N][N],int b[N][N],int n,int c[N][N])
{
int i,j,k;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
c[i][j]=0;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
for(k=0;k<n;k++)
{
c[i][j]+=a[i][k]*b[k][j];
}
}
}
}//定义实现矩阵乘法的函数
int main()
{
int m,n,i,j,k,a[N][N],b[N][N]={0},c[100][100]={0};
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
b[i][j]=a[i][j];
}
}
for(i=0;i<m-1;i++)
{
mult(a,b,n,c);
for(j=0;j<n;j++)
{
for(k=0;k<n;k++)
{
b[j][k]=c[j][k];//用c来接收前两个矩阵相乘的结果,并将其储存在b中以实现求解高次矩阵
}
}
}
printf("矩阵的%d次幂为:\n",m);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",c[i][j]);
}
printf("\n");
}
return 0;
}