**

6-1 稀疏矩阵求和 (70 分)

**
本题实现稀疏矩阵的求和运算。
函数接口定义:

int add_mat(elem a[],int t1,elem b[],int t2, elem c[]);//求a+b

其中 t1 和 t2 表示稀疏矩阵a的长度和稀疏矩阵b的长度,函数返回a+b的长度。

裁判测试程序样例:

#include <stdio.h>
#define M 10  //行
#define N 10  //列
typedef  struct
{    int  row, col;     //行号、列号
int    val;
}elem;void input(elem a[],int m);
void show_mat(elem a[],int n);
int add_mat(elem a[],int t1,elem b[],int t2, elem c[]);void input(elem a[],int m)
{int i;
for(i=0;i<m;i++)
scanf("%d%d%d",&a[i].row,&a[i].col,&a[i].val);
}void show_mat(elem a[],int n)//输出
{int i;for(i=0;i<n;i++)printf("%d %d %d\n",a[i].row,a[i].col,a[i].val);
}int main()
{int t,m,n;elem a[M*N],b[N*M],c[N*M];scanf("%d%d",&m,&n);input(a,m);input(b,n);t=add_mat(a,m,b,n,c);//c=a+bshow_mat(c,t);return 0;
}/* 请在这里填写答案 */

输入样例:

第一行为矩阵行和列,接下来为两个矩阵

3 2
0 0 1
0 1 3
2 1 2
0 1 -3
1 1 2
//结尾无空行

输出样例:

0 0 1
1 1 2
2 1 2
//结尾无空行
/* 请在这里填写答案 */
int add_mat(elem a[],int t1,elem b[],int t2, elem c[]){int s=0,i=0,j=0,k=0;while(i!=t1||j!=t2){if(i<t1&&j<t2){if(a[i].row<b[j].row){//稀疏矩阵a的行号小于b,将a的项存入c中c[k].row=a[i].row;c[k].col=a[i].col;c[k].val=a[i].val;i++;k++;}else if(a[i].row>b[j].row){//稀疏矩阵a的行号大于b,将b的项存入c中c[k].row=b[j].row;c[k].col=b[j].col;c[k].val=b[j].val;j++;k++;}else if(a[i].row==b[j].row){//稀疏矩阵的行号相等if(a[i].col<b[i].col){//稀疏矩阵a的列号小于b,将a的项存入c中c[k].row=a[i].row;c[k].col=a[i].col;c[k].val=a[i].val;i++;k++;}else if(a[i].col>b[j].col){//稀疏矩阵a的列号大于b,将a的项存入c中c[k].row=b[j].row;c[k].col=b[j].col;c[k].val=b[j].val;j++;k++;}else{//稀疏矩阵的列号相等if(b[j].val+a[i].val!=0){c[k].row=b[j].row;c[k].col=b[j].col;c[k].val=b[j].val+a[i].val;i++;j++;k++;}else{i++;j++;}}}}else if(i==t1&&j!=t2){c[k].row=b[j].row;c[k].col=b[j].col;c[k].val=b[j].val;j++;k++;}else if(i!=t1&&j==t2){c[k].row=a[i].row;c[k].col=a[i].col;c[k].val=a[i].val;i++;k++;}}return k;}

6-1 稀疏矩阵求和 (70 分)相关推荐

  1. CSP:CSP认证考试:202109-2(非零段划分)70分答案,Java版

    CSP:CSP认证考试:202109-2(非零段划分)70分答案,Java版 一.题目: 二.Java70分答案 import java.util.ArrayList; import java.uti ...

  2. 「PKUSC2018」星际穿越 (70分做法)

    5371: [Pkusc2018]星际穿越 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 27  Solved: 11 [Submit][Statu ...

  3. 洛谷P4559 [JSOI2018]列队 【70分二分 + 主席树】

    题目链接 洛谷P4559 题解 只会做\(70\)分的\(O(nlog^2n)\) 如果本来就在区间内的人是不用动的,区间右边的人往区间最右的那些空位跑,区间左边的人往区间最左的那些空位跑 找到这些空 ...

  4. P2241 统计方形(数据加强版)-- 70分 python3实现

    统计方形(数据加强版) - 洛谷 """P2241 统计方形(数据加强版)-- 70分 python3实现 https://www.luogu.com.cn/proble ...

  5. 1.13 编程基础之综合应用 12 分数求和 4分 python

    http://noi.openjudge.cn/ch0113/12/ """ 1.13 编程基础之综合应用 12 分数求和 4分 http://noi.openjudge ...

  6. 7-2 多项式求和 (10 分)

    7-2 多项式求和 (10 分) 编写算法求一元多项式的值Pn​(x)=∑i=0n​ai​xi的值Pn​(x0​). 注意:不要使用内置的求幂函数,例如C中的pow().Python中的**等 输入格 ...

  7. 7-9 N个数求和 (20 分)

    7-9 N个数求和 (20 分) 本题的要求很简单,就是求N个数字的和.麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式. 输入格式: 输入第一行给出一个正整数N(≤ ...

  8. 实验4-1-7 特殊a串数列求和 (20 分)

    实验4-1-7 特殊a串数列求和 (20 分) 给定两个均不超过9的正整数a和n,要求编写程序求a+a**a+aaa++⋯+a**a⋯a(n个a)之和. 输入格式: 输入在一行中给出不超过9的正整数a ...

  9. 三元组顺序表表示的稀疏矩阵转置(10分)

    三元组顺序表表示的稀疏矩阵转置(10分) 本题要求实现一个函数,实现三元组顺序表表示的稀疏矩阵转置. 函数接口定义: struct tripletable * trans(struct triplet ...

最新文章

  1. 在AIX上空闲卷上重建文件系统
  2. cookie和session的讲解
  3. Arduino使用HC05蓝牙模块与手机连接(转载)
  4. Python3--文件读取、写入、追加及seek()方法的使用
  5. linux c之fdopen(int fd, const char *type)使用总结
  6. 每天五分钟,玩转Docker。-Day2
  7. android studio sugar,Android | Sugar 的介绍和简单使用
  8. vue中文件上传方法
  9. [WPF]c#调用默认浏览器打开网址
  10. 服务器双网卡导致的网络故障及解决方案
  11. Java中的类加载器详解
  12. 如何绘制一幅优雅的列线图
  13. ubuntu 局域网连接
  14. 视频编解码(一):ffmpeg编码H.264帧类型判断
  15. JPBC密码学库封装函数
  16. 发一个自己常用的通信词汇缩写表(实时更新)
  17. Navicat连接SqlServer 提示远程主机关闭一个现有连接
  18. 爱上一个人的七种表现
  19. ipv6地址概述——配置ipv6
  20. 护卫神备份mysql_护卫神好备份系统数据库怎么备份?

热门文章

  1. css设置元素继承父元素宽度_详解CSS中的百分比的应用
  2. python中if语句使用_如何在python中使用'空if语句'?
  3. 看《Linux入门讲座》随记
  4. 我的邮箱又收到了一封信,这一次,关乎爱情
  5. 腾讯云存储上传图片前端处理
  6. [BZOJ3238][AHOI2013]差异 [后缀数组+单调栈]
  7. 2018-5-22-Python全栈开发day9-Python开发课程简介part2
  8. java必会的英语单词
  9. (转)nmake学习笔记
  10. div中字垂直居中对齐