合并表记录(C/C++)
来源:互联网 发布:淘宝店铺爆款神器软件 编辑:程序博客网 时间:2024/06/09 23:57
题目描述
数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。
输入描述:
先输入键值对的个数
然后输入成对的index和value值,以空格隔开
输出描述:
输出合并后的键值对(多行)
输出合并后的键值对(多行)
输入例子:
4
0 1
0 2
1 2
3 4
4
0 1
0 2
1 2
3 4
输出例子:
0 3
1 2
3 4
解题思路:
本题可以使用关联容器map来处理,因为关联容器本质上是红黑树,实现自平衡,元素位置取决于特定的排序准则,和插入顺序无关,因此在输出的时候是经过排序的。我们所要做的就是在输入的时候将索引值相同的进行合并。
#include<iostream>#include<map>using namespace std;int main(){int length;int index, value;map<int, int> Table;while (cin >> length){for (int i = 0; i < length; i++){cin >> index >> value;if (!Table[index]) //若之前map中不存在此索引值的数值,则进行赋值Table[index] = value;else //若之前map中存在此索引值的数值,则进行累加,即进行合并Table[index] += value;}for (auto it = Table.begin(); it != Table.end; it++){cout << (*it).first << " " << (*it).second << endl;}}system("pause");return 0;}
拓展:
STL中提供了4种关联容器:set、multiset、map和multimap。区别是:
set:其值类型和键相同,键是唯一的,这意味着集合中不会有多个相同的键,对于set来说,值就是键。
multiset:类似于set,只是可能有多个值的键相同。
map:值与键的类型不同,键是唯一的,每个键只对应一个值。
multimap:类似于map,只是一个键可以与多个值相关联。
阅读全文
0 0
- 合并表记录(C/C++)
- 合并表记录
- 合并表记录
- 合并表记录
- 合并表记录
- 合并表记录
- 合并表记录
- 合并表记录
- 合并表记录
- 009-合并表记录
- 合并表记录
- 合并表记录
- 合并表记录
- 合并表记录
- 合并表记录
- 合并表记录
- 合并表记录
- 合并表记录
- GreenDao 3.2.0 的基本使用教程
- spring mvc对异常的统一处理
- 自适应单元引用
- Git将本地项目上传到Github
- 记录一下自己在学习中遇到的前端知识点
- 合并表记录(C/C++)
- STM32 的SPI读写函数解析
- 完美运动框架——getStyle(obj,attr)、startMove(obj,json,fn)
- C++利用文件下载实现网络测速的总结
- SpringBoot项目整合Druid进行统计监控
- 【代码笔记】iOS-UILabel根据内容自动调整高度
- Lists.newArrayList
- vue-cli入门(二)——项目结构
- 【相关知识】目标检测之||R-CNN||SPP-NET ||Fast-RCNN ||Faster-RCNN||YOLO ||SSD