牛客网&&华为机试&&合并表记录
代码实现
#include<iostream>
#include<vector>
#include<algorithm>
using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::sort;
struct Key_Value_Pair {
int index;
int value;
};
bool Compare(const Key_Value_Pair& a, const Key_Value_Pair& b)
{
return a.index < b.index;
}
int main()
{
int num = 0;
int i = 0;
int j = 0;
int k = 0;
int keynum = 0;
cin >> num;
vector<Key_Value_Pair> TEMP(num); //定义合适长度的结构体数组
for (int i = 0; i < num; i++)
{
cin >> TEMP[i].index >> TEMP[i].value;
}
for (i = 0; i < num; i++)
{
for (j = i + 1; j < num; j++) //第二层循环从j = i +1开始
if (TEMP[i].index == TEMP[j].index)
{
TEMP[i].value += TEMP[j].value;
TEMP[j].index = -1;
}
}
sort(TEMP.begin(),TEMP.end(), Compare);
for (int i = 0; i < num; i++)
{
if (TEMP[i].index >= 0)
cout << TEMP[i].index << ' ' << TEMP[i].value << endl;
}
return 0;
}
编程笔记
- 代码实现解题思路:1.定义结构体分别储存键值和数值;2.使用vector<Key_Value_Pair> TEMP(num); 定义正确的结构体数组长度;2.循环对键值相同的数值进行相加;4.使用sort排序,效率较高,并输出。
- 输入格式的理解。
- 同时输入一对相关连的数据考虑使用结构体存储。
- 熟悉C++sort()给结构体数组排序。
C++sort()给结构体数组排序参考链接 - 熟悉C++中vector和set使用sort方法进行排序。
C++中vector和set使用sort方法进行排序参考链接