6-1 稀疏矩阵求和 (70 分)
**
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 分)相关推荐
- CSP:CSP认证考试:202109-2(非零段划分)70分答案,Java版
CSP:CSP认证考试:202109-2(非零段划分)70分答案,Java版 一.题目: 二.Java70分答案 import java.util.ArrayList; import java.uti ...
- 「PKUSC2018」星际穿越 (70分做法)
5371: [Pkusc2018]星际穿越 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 27 Solved: 11 [Submit][Statu ...
- 洛谷P4559 [JSOI2018]列队 【70分二分 + 主席树】
题目链接 洛谷P4559 题解 只会做\(70\)分的\(O(nlog^2n)\) 如果本来就在区间内的人是不用动的,区间右边的人往区间最右的那些空位跑,区间左边的人往区间最左的那些空位跑 找到这些空 ...
- P2241 统计方形(数据加强版)-- 70分 python3实现
统计方形(数据加强版) - 洛谷 """P2241 统计方形(数据加强版)-- 70分 python3实现 https://www.luogu.com.cn/proble ...
- 1.13 编程基础之综合应用 12 分数求和 4分 python
http://noi.openjudge.cn/ch0113/12/ """ 1.13 编程基础之综合应用 12 分数求和 4分 http://noi.openjudge ...
- 7-2 多项式求和 (10 分)
7-2 多项式求和 (10 分) 编写算法求一元多项式的值Pn(x)=∑i=0naixi的值Pn(x0). 注意:不要使用内置的求幂函数,例如C中的pow().Python中的**等 输入格 ...
- 7-9 N个数求和 (20 分)
7-9 N个数求和 (20 分) 本题的要求很简单,就是求N个数字的和.麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式. 输入格式: 输入第一行给出一个正整数N(≤ ...
- 实验4-1-7 特殊a串数列求和 (20 分)
实验4-1-7 特殊a串数列求和 (20 分) 给定两个均不超过9的正整数a和n,要求编写程序求a+a**a+aaa++⋯+a**a⋯a(n个a)之和. 输入格式: 输入在一行中给出不超过9的正整数a ...
- 三元组顺序表表示的稀疏矩阵转置(10分)
三元组顺序表表示的稀疏矩阵转置(10分) 本题要求实现一个函数,实现三元组顺序表表示的稀疏矩阵转置. 函数接口定义: struct tripletable * trans(struct triplet ...
最新文章
- 在AIX上空闲卷上重建文件系统
- cookie和session的讲解
- Arduino使用HC05蓝牙模块与手机连接(转载)
- Python3--文件读取、写入、追加及seek()方法的使用
- linux c之fdopen(int fd, const char *type)使用总结
- 每天五分钟,玩转Docker。-Day2
- android studio sugar,Android | Sugar 的介绍和简单使用
- vue中文件上传方法
- [WPF]c#调用默认浏览器打开网址
- 服务器双网卡导致的网络故障及解决方案
- Java中的类加载器详解
- 如何绘制一幅优雅的列线图
- ubuntu 局域网连接
- 视频编解码(一):ffmpeg编码H.264帧类型判断
- JPBC密码学库封装函数
- 发一个自己常用的通信词汇缩写表(实时更新)
- Navicat连接SqlServer 提示远程主机关闭一个现有连接
- 爱上一个人的七种表现
- ipv6地址概述——配置ipv6
- 护卫神备份mysql_护卫神好备份系统数据库怎么备份?