大白菜 2023-11-16 20:17 采纳率: 0%
浏览 86

已知两个稀疏矩阵A和B,其行数和列数均对应相等,编写一个程序,计算A和B之和,假设稀疏矩阵采用三元组表示

已知两个稀疏矩阵A和B,其行数和列数均对应相等,编写一个程序,计算A和B之和,假设稀疏矩阵采用三元组表示。
测试用例
1,1,2;2,1,3↵
1,2,5;2,1,-3↵
以文本方式显示
1,1,2;1,2,5↵

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-16 23:11
    关注

    【以下回答由 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的和,并以文本方式显示结果。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月16日

悬赏问题

  • ¥50 pc微信3.6.0.18不能登陆 有偿解决问题
  • ¥15 求TYPCE母转母转接头24PIN线路板图
  • ¥100 国外网络搭建,有偿交流
  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集