3阶矩阵的乘法
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
c-source:
#include<stdio.h>
#define M 3
#define N 3
void main()
{
int t[M][N],b[M][N];
int n;
printf("The number of n:\n");
scanf("%d",&n);
int **answer=new int *[n];
for(int i=0;i<n;i++)
answer[i] = new int[9];
for(int q1=0;q1<n;q1++)
for(int q2=0;q2<9;q2++)
answer[q1][q2]=0;
for(int k=0;k<n;k++)
{
for(int i1=0;i1<M;i1++)
for(int j5=0;j5<N;j5++)
scanf("%d",&t[i1][j5]);
for(int i2=0;i2<M;i2++)
for(int j2=0;j2<N;j2++)
scanf("%d",&b[i2][j2]);
printf("\n");
for(int i3=0;i3<M;i3++)
for(int j3=0;j3<N;j3++)
{
for(int q=0;q<M;q++)
{
answer[k][i3*M+j3]+=t[i3][q]*b[q][j3];
}
}
}
for(int p=0;p<n;p++)
{
for(int j4=0;j4<9;j4++)
{
if(j4%3==0)
printf("\n");
printf("%d ",answer[p][j4]);
}
printf("\n\n");
}
for(i=0;i<n;++i)
delete[] answer[i];
delete[] answer;
}
知识点:
⒈new二维数组M*N;
int **a=new int *[M];
for(int i=0;i<M;i++)
a[i]=new int[N];
⒉动态分配必须由程序自行释放空间:
for(int j=0;j<M;j++)
delete[] a[j];
delete [] a;
M*P与P*N维矩阵相乘的问题:
for(int i=0;i<M;i++)
for(int j=0;j<N;j++)
{
for(int k=0;k<p;k++)
answer[i][j]+=a[i][k]*a[k][j];
}
转载请注明文章作者:小刘