已知两个稀疏矩阵A和B,其行数和列数均对应相等,编写一个程序,计算A和B之和,假设稀疏矩阵采用三元组表示。
测试用例
1,1,2;2,1,3↵
1,2,5;2,1,-3↵
以文本方式显示
1,1,2;1,2,5↵
已知两个稀疏矩阵A和B,其行数和列数均对应相等,编写一个程序,计算A和B之和,假设稀疏矩阵采用三元组表示
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 【以下回答由 GPT 生成】
#include <stdio.h> #define MAX_SIZE 100 typedef struct { int row; int col; int val; } SparseMatrix; void addSparseMatrices(SparseMatrix A[], SparseMatrix B[], SparseMatrix C[], int sizeA, int sizeB) { int i = 0, j = 0, k = 0; while (i < sizeA && j < sizeB) { if (A[i].row < B[j].row || (A[i].row == B[j].row && A[i].col < B[j].col)) { C[k].row = A[i].row; C[k].col = A[i].col; C[k].val = A[i].val; i++; } else if (A[i].row > B[j].row || (A[i].row == B[j].row && A[i].col > B[j].col)) { C[k].row = B[j].row; C[k].col = B[j].col; C[k].val = B[j].val; j++; } else { C[k].row = A[i].row; C[k].col = A[i].col; C[k].val = A[i].val + B[j].val; i++; j++; } k++; } while (i < sizeA) { C[k].row = A[i].row; C[k].col = A[i].col; C[k].val = A[i].val; i++; k++; } while (j < sizeB) { C[k].row = B[j].row; C[k].col = B[j].col; C[k].val = B[j].val; j++; k++; } } void displaySparseMatrix(SparseMatrix mat[], int size) { for (int i = 0; i < size; i++) { printf("%d,%d,%d;\n", mat[i].row, mat[i].col, mat[i].val); } } int main() { SparseMatrix A[MAX_SIZE] = {{1, 1, 2}, {2, 1, 3}}; SparseMatrix B[MAX_SIZE] = {{1, 2, 5}, {2, 1, -3}}; SparseMatrix C[MAX_SIZE]; int sizeA = 2; int sizeB = 2; addSparseMatrices(A, B, C, sizeA, sizeB); displaySparseMatrix(C, sizeA + sizeB); return 0; }
运行上述C程序可以输出稀疏矩阵A和B的和,并以文本方式显示结果。
【相关推荐】
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报
悬赏问题
- ¥50 pc微信3.6.0.18不能登陆 有偿解决问题
- ¥15 求TYPCE母转母转接头24PIN线路板图
- ¥100 国外网络搭建,有偿交流
- ¥15 高价求中通快递查询接口
- ¥15 解决一个加好友限制问题 或者有好的方案
- ¥15 急matlab编程仿真二阶震荡系统
- ¥20 TEC-9的数据通路实验
- ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
- ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
- ¥15 python如何将动态的多个子列表,拼接后进行集合的交集