三元组表减法

发布时间:2026/7/14 5:33:08
三元组表减法 题目描述:两个同阶稀疏矩阵 A 和 B 分别都采用三元组表示编写程序求 C A - B要求 C 也采用三元组表示。输入格式:第一行为两个不超过1000的正整数 m 和 n表示矩阵 A 和 B 的非零元素个数即 A 和 B 的三元组表长度。接下来的 m 行分别表示矩阵 A 的 m 个三元组结点信息每行3个整数表示每个三元组结点的行号、列号、值。接下来的 n 行分别表示矩阵 B 的 n 个三元组结点信息每行3个整数表示每个三元组结点的行号、列号、值。输出格式:输出矩阵 C 的三元组表每个三元组结点一行同行元素间用空格间隔每行最后一个元素后面不要加空格。输入样例:3 21 2 32 1 82 3 61 2 12 1 3输出样例:1 2 22 1 52 3 6#includebits/stdc.h using namespace std; typedef struct tri { int row; int col; int data; }tri; int main () { int m,n; cinmn; tri a[m],b[n],c[mn]; for(int i0;im;i) cina[i].rowa[i].cola[i].data; for(int i0;in;i) cinb[i].rowb[i].colb[i].data; int i0,j0,k0; while(imjn) { if(a[i].rowb[j].rowa[i].colb[j].col) { int ta[i].data-b[j].data; if(t!0) { c[k].rowa[i].row; c[k].cola[i].col; c[k].datat; k; } i; j; } else if(a[i].rowb[j].row||a[i].rowb[j].rowa[i].colb[j].col) { c[k].rowa[i].row; c[k].cola[i].col; c[k].dataa[i].data; k; i; } else { c[k].rowb[j].row; c[k].colb[j].col; c[k].data-b[j].data; k; j; } } while(im) { c[k].rowa[i].row; c[k].cola[i].col; c[k].dataa[i].data; k; i; } while(jn) { c[k].rowb[j].row; c[k].colb[j].col; c[k].data-b[j].data; k; j; } for(int i0;ik;i) coutc[i].row c[i].col c[i].dataendl; }