ACM从零开始---电子科大POJ "3*3矩阵的乘法"

                             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];
}


转载请注明文章作者:小刘
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值