lulu_melon 2023-04-18 21:06 采纳率: 50%
浏览 31
已结题

关于#c语言#的问题:稀疏矩阵加法

img

题目如上,编程如下,求各位高人指点迷津。我觉得我做的没任何问题,可是通过率只有百分之几..
算法原理:
使用双循环,内循环pN,外循环pM。若发现pN有元素与pM行列数相同,相加不为0则计入pQ中,再使pM的下一个元素继续进行上述操作。

若遍历一遍pN,未发现可与pM行列数相同,则将pM数据计入pQ中。

最后一个双循环,内循环pM,外循环pN,目的:遍历一遍pM,找出未与pM行列数相同的pN元素,将其数据计入pQ中。


bool add_matrix(const TSMatrix* pM, const TSMatrix* pN, TSMatrix* pQ) {
    if ( pM->m !=   pN->m ||  pM->n !=  pN->n)
    {
        return false;

    }
    else
    {
        pQ->m = pM->m;
        pQ->n = pM->n;
       
        int i_q= 0;
        int i_m = 0;
        int i_n = 0;
        for (int x = 1; x <=pM->len; x++)
        {
            int count = 0;
            

            for (int y = 1; y <= pN->len; y++)
            {   
                if (pM->data->i==pN->data->i)
                {
                    if (pM->data->j==pN->data->j)
                    {
                       
                        if (pM->data->e+pN->data->e != 0)
                        {
                            pQ->data->i = pM->data->i;
                            pQ->data->j = pM->data->j;
                            pQ->data->e = pM->data->e + pN->data->e;
                            pQ->data[i_q++];
                            pQ->len++;

                        }
                      
                        
                        
                        count++;
                        
                    }
                }
                pN->data[i_n++];  
            }
            if (count == 0)
            {
                pQ->data->i = pM->data->i;
                pQ->data->j = pM->data->j;
                pQ->data->e = pM->data->e;
                pQ->data[i_q++];
                pQ->len++;

            }
            pM->data[i_m++];
        }

         
         i_m = 0;
         i_n = 0;

        for (int x = 1; x < pN->len; x++)
        {   
            int count = 0;
           
            for (int y = 1; y <= pM->len; y++)
            {
                if (pN->data->i == pM->data->i)
                {
                    if (pN->data->j == pM->data->j)
                    {
                      

                        count++;

                    }
                }
                pM->data[i_m++];
            }
            if (count == 0)
            {
                pQ->data->i = pN->data->i;
                pQ->data->j = pN->data->j;
                pQ->data->e = pN->data->e;
                pQ->data[i_q++];
                pQ->len++;

            }
            pN->data[i_n++];

        }
        return true;
    }

}
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-19 16:45
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7552641
    • 以下回答来自chatgpt: 很抱歉,作为一名人工智能,我不具备获取最新的娱乐圈消息的能力,无法为你提供关于裴秀智的最新信息。但是,如果你有关于技术或者程序开发上的问题,我很乐意为您提供帮助。

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

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月26日
  • 修改了问题 4月18日
  • 修改了问题 4月18日
  • 创建了问题 4月18日

悬赏问题

  • ¥15 有人会用py或者r画这种图吗
  • ¥15 MOD04_3K图像预处理
  • ¥15 [VASP]关于超胞大小和k 点网格的收敛性测试
  • ¥15 pip下载paddle2onnx离谱错误
  • ¥60 db2move nlzxams import 导出db2备份数据报错
  • ¥15 关于#python#的问题:全文总结功能咨询
  • ¥15 俄罗斯方块中无法同时消除多个满行
  • ¥15 c#转安卓 java html
  • ¥15 使用gojs3.0,如何在nodeDataArray设置好text的位置,再go.TextBlock alignment中进行相应的改变
  • ¥15 psfusion图像融合指标很低