
1 #include<stdio.h> 2 typedef struct{ 3 int vex[50]; 4 int matrix[50][50]; 5 int m,n,length; 6 }AZ; 7 void Create(AZ*A) 8 { 9 int e,t=0; 10 scanf("%d %d",&A->m,&A->n); 11 for(int i=0;i<A->m;i++) 12 for(int j=0;j<A->n;j++) 13 { 14 scanf("%d",&e); 15 if(e) 16 { 17 A->vex[t++]=e; 18 A->matrix[i][j]=1; 19 } 20 else A->matrix[i][j]=0; 21 } 22 A->length=t; 23 } 24 void Ins(AZ*T,int index,int e) 25 { 26 int i; 27 for(i=T->length;i>index;i--)T->vex[i]=T->vex[i-1]; 28 T->vex[i]=e; 29 T->length++; 30 } 31 void Delete(AZ*T,int index) 32 { 33 for(int i=index;i<T->length-1;i++) 34 T->vex[i]=T->vex[i+1]; 35 T->length--; 36 } 37 void AZAdd(AZ*A,AZ*B) 38 { 39 int a=0,b=0,e; 40 for(int i=0;i<A->m;i++) 41 for(int j=0;j<A->n;j++) 42 { 43 if(A->matrix[i][j]&&B->matrix[i][j]) 44 { 45 e=A->vex[a]+B->vex[b]; 46 if(e) 47 { 48 A->vex[a]=e; 49 a++,b++; 50 } 51 else 52 { 53 A->matrix[i][j]=0; 54 AZ*T=A; 55 Delete(T,a); 56 b++; 57 } 58 } 59 else if(B->matrix[i][j]) 60 { 61 A->matrix[i][j]=1; 62 AZ*T=A; 63 Ins(T,a,B->vex[b]); 64 a++,b++;//不要漏掉a++ 65 } 66 else if(A->matrix[i][j])a++; 67 } 68 } 69 void Order(AZ*A) 70 { 71 int t=0; 72 for(int i=0;i<A->m;i++) 73 for(int j=0;j<A->n;j++) 74 { 75 if(A->matrix[i][j]) 76 printf("第%d行第%d列%d\n",i,j,A->vex[t++]); 77 } 78 } 79 int main() 80 { 81 AZ A,B; 82 Create(&A); 83 Create(&B); 84 AZAdd(&A,&B); 85 Order(&A); 86 return 0; 87 88 }