卧槽刚刚想截屏运行了一次,又有输出了,结果如图
#include<stdio.h>
#include<malloc.h>
#define MAX 100
typedef struct{
int hang,lie;
int value;
}Triple;
typedef struct{
Triple data[MAX];
int nonezero;
}*TSMatrix;
void scanfTSM(int i,TSMatrix P)//输入
{
int r,c,v;
for(int j=0;j<i;j++){
scanf("%d%d%d",&r,&c,&v);
P->data[j].hang=r;
P->data[j].lie=c;
P->data[j].value=v;
}
P->nonezero=i-1;
}
void MergTSM(TSMatrix A,TSMatrix B,TSMatrix C)//合并
{
int a=0,b=0,c=0;
Triple a1,b1;
while(1){
if(a> A->nonezero&&b<B->nonezero ) {
while(b<= B->nonezero){ C->data[c]=B->data[b];b++;c++; }
break; }
if(a < A->nonezero&& b > B->nonezero ) {
while(a<= A->nonezero){ C->data[c]=A->data[a];a++;c++; }
break; }
if(a>A->nonezero && b>B->nonezero ) break;
a1=A->data[a];
b1=B->data[b];
if(a1.hang==b1.hang && a1.lie==b1.lie) {C->data[c]=a1;C->data[c].value+=b1.value;
a++;b++;c++; }
if(a1.hang < b1.hang ) {C->data[c]=a1;a++;c++; }
if(a1.hang > b1.hang ) {C->data[c]=b1;b++;c++; }
if(a1.hang==b1.hang) {
if(a1.lie < b1.lie) {C->data[c]=a1;a++;c++; }
if(a1.lie > b1.lie) {C->data[c]=b1;b++;c++; }
}
}
C->nonezero=c;
}
int main(){
int a,b;
scanf("%d%d",&a,&b);
TSMatrix A,B,C;
A=(TSMatrix)malloc(sizeof(Triple));
B=(TSMatrix)malloc(sizeof(Triple));
C=(TSMatrix)malloc(sizeof(Triple));
A->nonezero=0;
B->nonezero=0;
C->nonezero=0;
scanfTSM(a,A);
scanfTSM(b,B);
MergTSM(A,B,C);
int m=0;
int h,l,shu;
while(m <= C->nonezero ){
h=C->data[m].hang;
l=C->data[m].lie;
shu=C->data[m].value;
printf("%d %d %d\n",h,l,shu);
m++;
}
return 0;
}