1 #include<stdio.h>
 2 typedef struct{
 3     int row,col;
 4     int data;
 5 }Triple;
 6 typedef struct{
 7     Triple element[200];
 8     int m,n,length;
 9 }TSMatrix;
10 void Create(TSMatrix*T)
11 {
12     scanf("%d %d",&T->m,&T->n);
13     int e,t=0;
14     for(int i=0;i<T->m;i++)
15     for(int j=0;j<T->n;j++)
16     {
17         scanf("%d",&e);
18         if(e)
19         {
20             T->element[t].row=i;
21             T->element[t].col=j;
22             T->element[t].data=e;
23             t++;
24         }
25     }
26     T->length=t;
27 }
28 void Add(TSMatrix*A,TSMatrix*B,TSMatrix*C)
29 {
30     int a=0,b=0,c=0;
31     C->m=A->m;
32     C->n=A->n;
33     while(a<A->length&&b<B->length)
34     {
35         if(A->element[a].row<B->element[b].row)
36         C->element[c++]=A->element[a++];
37         else if(A->element[a].row==B->element[b].row&&A->element[a].col<B->element[b].col)
38         C->element[c++]=A->element[a++];
39         else if(A->element[a].row>B->element[b].row)
40         C->element[c++]=B->element[b++];
41         else if(A->element[a].row==B->element[b].row&&A->element[a].col>B->element[b].col)
42         C->element[c++]=B->element[b++];
43         else{
44             if(A->element[a].data+B->element[b].data)
45             {
46             C->element[c]=B->element[b];
47             C->element[c++].data=B->element[b++].data+A->element[a++].data;
48             }
49         }
50     }
51     while(a<A->length)
52         C->element[c++]=A->element[a++];
53     while(b<B->length)
54     C->element[c++]=B->element[b++];
55     C->length=c;
56 }
57 void Order(TSMatrix*C)
58 {
59     for(int i=0;i<C->length;i++)
60     printf("第%d行第%d列%d\n",C->element[i].row+1,C->element[i].col+1,C->element[i].data);
61 }
62 int main()
63 {
64     TSMatrix A,B,C;
65     Create(&A);
66     Create(&B);
67     Add(&A,&B,&C);
68     Order(&C);
69     return 0;
70     
71 }