电子科大POJ "3*3矩阵的乘法"

 3阶矩阵的乘法

Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)




c-source:
 1 #include<stdio.h>
 2 #define M 3 
 3 #define N 3
 4 void main()
 5 {
 6     int t[M][N],b[M][N];
 7     int n;
 8 
 9     printf("The number of n:\n");
10     scanf("%d",&n);
11 
12     
13     int **answer=new int *[n]; 
14     for(int i=0;i<n;i++) 
15         answer[i] = new int[9]; 
16 
17     for(int q1=0;q1<n;q1++)
18         for(int q2=0;q2<9;q2++)
19             answer[q1][q2]=0;
20     
21     for(int k=0;k<n;k++)
22     {
23         for(int i1=0;i1<M;i1++)
24             for(int j5=0;j5<N;j5++)
25                 scanf("%d",&t[i1][j5]);
26         
27         
28         for(int i2=0;i2<M;i2++)
29             for(int j2=0;j2<N;j2++)
30                 scanf("%d",&b[i2][j2]);
31         
32         printf("\n");
33 
34         for(int i3=0;i3<M;i3++)
35             for(int j3=0;j3<N;j3++)
36             {
37                 for(int q=0;q<M;q++)
38                 {
39                 answer[k][i3*M+j3]+=t[i3][q]*b[q][j3];
40                 }    
41             }
42     }
43     
44     for(int p=0;p<n;p++)
45     {
46         for(int j4=0;j4<9;j4++)
47             {
48             if(j4%3==0)
49                     printf("\n");
50                 printf("%d ",answer[p][j4]);
51             }
52             printf("\n\n");
53     }
54     
55     for(i=0;i<n;++i) 
56         delete[] answer[i]; 
57     delete[] answer; 
58 }

 


知识点:
 
⒈new二维数组M*N;
1   int **a=new int *[M];
2   for(int i=0;i<M;i++)
3   a[i]=new int[N];

 

⒉动态分配必须由程序自行释放空间:
for(int j=0;j<M;j++)
  delete[] a[j];
  delete [] a;

 


M*P与P*N维矩阵相乘的问题:
1 for(int i=0;i<M;i++)
2     for(int j=0;j<N;j++)
3     {
4         for(int k=0;k<p;k++)
5             answer[i][j]+=a[i][k]*a[k][j];
6     }
7         

 

 

posted @ 2014-07-01 20:43  vpoet  阅读(479)  评论(0编辑  收藏  举报