Problem H: 稀疏矩阵的表示和运算 SDUSTOJ
来源:互联网 发布:黑客入侵数据库 编辑:程序博客网 时间:2024/05/16 17:06
本来想用 vector ,试了下不好实现,换用 node 的数组
重载运算
#include<iostream>#include<cstdio>#include<vector>#include<algorithm>#include<set>using namespace std;const int maxn = 10000;struct node { int r, c, v;};bool cmp(node aa, node bb) { if(aa.r == bb.r) return aa.c < bb.c; return aa.r < bb.r;}class Triple{private: node a_[maxn]; int len;public: Triple() {} ~Triple() {} friend istream &operator >> (istream &in, Triple &t) { int i = 0; while(1) { in >> t.a_[i].r >> t.a_[i].c >> t.a_[i].v; if(t.a_[i].r == 0 && t.a_[i].c == 0) break; ++i; } t.len = i; return in; } friend ostream &operator << (ostream &out, Triple& t) { sort(t.a_, t.a_+t.len, cmp); //cout << "++++" << endl; for(int i = 0; i < t.len; i++) { if(t.a_[i].v != 0) out << t.a_[i].r << " " << t.a_[i].c << " " << t.a_[i].v << endl; } //cout << "++++" << endl; return out; } Triple operator + (Triple &b) { for(int i = 0; i < b.len; ++i) a_[i+len] = b.a_[i]; len = len + b.len; sort(a_, a_+len, cmp); for(int i = 0; i < len-1; ++i) if(a_[i].r == a_[i+1].r && a_[i].c == a_[i+1].c) { a_[i].v += a_[i+1].v; a_[i+1].v = 0; } return *this; }};int main(){ Triple mat1, mat2, mat3; cin>>mat1; cin>>mat2; mat3 = mat1 + mat2; cout<<mat3; return 0;}
1 0
- SDUSTOJ Problem H: 稀疏矩阵的表示和运算
- Problem H: 稀疏矩阵的表示和运算 SDUSTOJ
- Problem H: 稀疏矩阵的表示和运算
- Problem H: 稀疏矩阵的表示和运算
- Problem H: 稀疏矩阵的表示和运算
- 稀疏矩阵的表示和运算
- 三元组表示的稀疏矩阵的加法和乘法
- 稀疏矩阵的三元组表示的实现及应用(2)——采用三元组存储稀疏矩阵,设计两个稀疏矩阵相加的运算算法
- SDUSTOJ Problem D: 时间类的构造和输出
- 稀疏矩阵的基本运算
- 稀疏矩阵的基本运算
- !实现稀疏矩阵(采用三元组表示)的基本运算
- 稀疏矩阵的转置用三元组表示
- 稀疏矩阵的顺序存储结构表示
- 稀疏矩阵的十字链表示
- 稀疏矩阵的三元组表示
- 稀疏矩阵的行逻辑链接表示
- 稀疏矩阵线性表示
- Jmeter安装和启动报错unable to access jarfile apachejmeter.jar【errorlevel=1】的解决
- HDU5974 A Simple Math Problem (韦达定理)
- 24
- Spring MVC 4.x 知识点
- 异常的深入研究与分析
- Problem H: 稀疏矩阵的表示和运算 SDUSTOJ
- 多线程购票
- HashMap实现
- Java 基本数据类型和包装类
- 7 Reasons You Should Learn Python Now
- springmvc整合TaskExecutor线程池的配置/使用
- MongoDB安装与使用(基于Mac系统安装,其他系统类似)
- api.kuaidi100.com 获得物流单号的跟踪信息(免费)
- LBS.云存储和云检索应用实战