题目描述
数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照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中存在此索引值的数值,则