华为机试——合并表记录
来源:互联网 发布:淘宝助理手机版最新 编辑:程序博客网 时间:2024/05/16 08:07
题目描述
数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。
输入描述:
先输入键值对的个数
然后输入成对的index和value值,以空格隔开
输出描述:
输出合并后的键值对(多行)
示例1
输入
40 10 21 23 4
输出
0 31 23 4
思路:
利用map的key值无重复:如果当前的第一个数在res的index中,那么直接将这个index对应的value值加上第二个值;否则将这个键值对放到map里。具体思路见注释。
代码:
#include <iostream>#include <sstream>#include <string>#include <map>using namespace std;int main(){ int N; string s; stringstream ss;//string流,非常好用! int input1,input2; getline(cin,s);//输入第一个参数:键值对个数,这里要用getline ss.clear(); ss.str(s); ss >> N;//利用stringstream转成int型 map<int,int> res;//map的index(其实是key)无重复,保存结果 while (N){ getline(cin, s); ss.clear(); ss.str(s); ss >> input1; ss >> input2;//输入一行,一行有两人个数据 if (res.count(input1)){//如果当前的第一个数在res的index中,那么直接将这个index对应的value值加上第二个值 res[input1] += input2; } else{//否则将这个键值对放到map里,用到了pair res.insert(pair<int, int>(input1, input2)); } --N; } for (map<int, int>::iterator iter = res.begin(); iter != res.end(); ++iter){//输出结果 cout << iter->first << " " << iter->second << endl; } return 0;}
输出结果: 运行时间: 5 ms 占用内存:368K 状态:答案正确
阅读全文
0 0
- 华为机试——合并表记录
- 华为机试——合并表记录
- 华为机试 合并表记录
- java----------华为机试------------合并表记录
- 华为OJ——合并表记录
- 华为OJ——合并表记录
- 华为OJ——合并表记录
- Java - 华为机试训练 - 合并表记录
- 牛客网_华为机试_008_合并表记录
- 《华为机试在线训练》之合并表记录
- 合并表记录(华为机试题)
- 华为机试题:合并表记录
- 华为OJ_1956_合并表记录
- 【华为OJ8】合并表记录
- 华为OJ:合并表记录
- 【华为OJ】合并表记录
- 合并表记录之机试
- 8——合并表记录
- 数学: HDU1005 Number Sequence
- VINS-Mono源码解析(四)后端: Initialization
- 优先队列几个应用详解
- 0035_Search Insert Position
- 【HDU 6038 Problem Description】+ 思维
- 华为机试——合并表记录
- MySQL 临时表
- Dijkstra's Algorithm分析以及其优化
- 关于Tomcat中乱码的产生原因详解
- VINS-Mono源码解析(五)后端: 紧耦合优化
- JS中修改标签中元素的属性值
- MySQL 复制表
- JavaScript原型和闭包之---prototype与__proto__的关系(四)
- 扩展阅读 新闻