| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 640 人关注过本帖
标题:三元组稀疏矩阵的乘法
只看楼主 加入收藏
hzm19960111
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-9-29
结帖率:0
收藏
 问题点数:0 回复次数:6 
三元组稀疏矩阵的乘法
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 12500
typedef struct
{
    int i,j;
    int e;
} Triple;
typedef struct
{
    Triple data[MAXSIZE+1];
    int mu,nu,tu;
} TSMatrix;
int CreateSMatrix2(TSMatrix &A,TSMatrix &B)
{
    int m,n,i,j,f,g,d,c,v,b;
    i=1;j=1;
    scanf("%d %d",&m,&n);
        A.mu=m;
        A.nu=n;
        A.tu=0;
while(1)
    {
        scanf("%d %d %d",&f,&g,&d);
        if(f==0&g==0&d==0)
        {break;}
        else
        A.data[i].i=f;
        A.data[i].j=g;
        A.data[i].e=d;
        A.tu++;
        i++;
    }
    scanf("%d %d",&m,&n);
        B.mu=m;
        B.nu=n;
        B.tu=0;
while(1)
    {
        scanf("%d %d %d",&c,&v,&b);
        if(c==0&v==0&b==0)
        {break;}
        else
        B.data[j].i=c;
        B.data[j].j=v;
        B.data[j].e=b;
        B.tu++;
        j++;
    }
    return 0;
}
int MultS(TSMatrix &A,TSMatrix &B,TSMatrix &C)
 { int k,p,crow,brow,q,ccol;
   int num[MAXSIZE],pos[MAXSIZE],ctemp[MAXSIZE];
    if (A.nu==B.mu)
       { for(k=1;k<=B.mu;k++)
            num[k]=0;
         for(k=1;k<=B.tu;k++)
            num[B.data[k].i]++;
        pos[1]=1;
         for(k=2;k<=B.tu;k++)
            pos[k]=pos[k-1]+num[k-1];
            pos[1+B.tu]=pos[B.tu]+1;
            C.mu=A.mu; C.nu=B.nu; C.tu=0; p=1;
        while(p<=A.tu)
         {crow=A.data[p].i;
          for(k=1;k<=C.nu;k++)
                  ctemp[k]=0;
                while (p<=A.tu&&A.data[p].i==crow)
                       {
                          brow=A.data[p].j;
                           for(q=pos[brow];q<=pos[brow+1]-1;q++)
                             {  ccol=B.data[q].j;
                                ctemp[ccol]=ctemp[ccol]+A.data[p].e*B.data[q].e;
                              }
                           p=p+1;
                        }
                          for(ccol=1;ccol<=B.nu;ccol++)
                             if(ctemp[ccol]!=0)
                               { C.tu=C.tu+1;
                                 C.data[C.tu].i=crow;
                                 C.data[C.tu].j=ccol;
                                 C.data[C.tu].e=ctemp[ccol];
                               }
        }
      }else printf("these two arrat can't Multiplicate");return 0;
 }


int main()
{

    TSMatrix A,B,C;
    int i;
    CreateSMatrix2(A,B);
    MultS(A,B,C);
    for(i=1;1;i++)
    {
        printf("%d %d %d\n",C.data[i].i,C.data[i].j,C.data[i].e);
        if(i>=C.tu)
            break;
    }
    return 0;
}











这是一个稀疏矩阵乘法的代码 我有一个测试点有毛病。少输出一行。但其他测试点却正确我也不敢轻易改后面的参数
谁能帮帮我
2L贴上测试点错误信息
搜索更多相关主题的帖子: include include 三元 三元 
2015-11-19 21:27
hzm19960111
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-9-29
收藏
得分:0 
输入数据
输出数据
16 16
1 1 3
2 2 -2
3 3 4
4 4 9
5 5 12
6 6 -3
7 7 6
8 8 -2
9 9 7
10 10 12
11 11 -3
12 12 7
13 13 9
14 14 10
15 15 1
0 0 0
16 16
1 1 2
2 2 3
3 3 11
4 4 3
5 5 6
6 6 -5
7 7 4
8 8 2
9 9 7
11 11 8
12 12 9
13 13 -5
14 14 2
15 15 10
0 0 0

标准输出:   
用户输出:
1 1 6
2 2 -6
3 3 44
4 4 27
5 5 72
6 6 15
7 7 24
8 8 -4
9 9 49
11 11 -24
12 12 63
13 13 -45
14 14 20
15 15 10

1 1 6
2 2 -6
3 3 44
4 4 27
5 5 72
6 6 15
7 7 24
8 8 -4
9 9 49
11 11 -24
12 12 63
13 13 -45
14 14 20

用户程序在运行时发生如下异常:

断点异常


如果不明白以上所示异常,可以假定是由于数组下标越界引起的。
2015-11-19 21:27
hzm19960111
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-9-29
收藏
得分:0 
因为急用,帮助解决者必有重谢!!!!!
2015-11-19 21:27
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
我想知道你打算怎么谢?

重剑无锋,大巧不工
2015-11-19 22:49
hzm19960111
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-9-29
收藏
得分:0 
回复 4楼 beyondyf
12点之前搞出来给报酬吧
2015-11-19 23:09
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
不好意思,昨晚休息的早,没看到你的帖子。不过查你的资料发现10月19号你就在写这个代码了,想必也不急在一时。

如果只是想解决你现在的问题,只需要改两行代码。但是如果希望有进一步的提升,那就要重写了。你这代码简直让我不法直视。

为这点小事谈报酬我都觉得不合适,不如聊聊天吧

重剑无锋,大巧不工
2015-11-20 08:23
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
这兄弟人呢?

重剑无锋,大巧不工
2015-11-20 19:18
快速回复:三元组稀疏矩阵的乘法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016934 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved