一、知识点
相当于自己实现C++的关联容器map
map存储键值对<key,value>
代码中insert的设置极为精妙
二、题目
1、描述
数据表记录包含表索引index和数值value(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照index值升序进行输出。
提示:
0 <= index <= 11111111
1 <= value <= 100000
2、输入
先输入键值对的个数n(1 <= n <= 500)
接下来n行每行输入成对的index和value值,以空格隔开
3、输出
输出合并后的键值对(多行)
三、自己写的代码
#include<stdio.h>
int main() {
int index[500], value[500];
int n, i, IndexMin = 11111112, j, index_temp, value_temp, insert = 0;
for (i = 0; i < 500; i++) {
index[i] = 11111112;
}
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d %d", &index_temp, &value_temp);
j = 0;
while (j < insert) {
if (index[j] == index_temp) {
value[j] += value_temp;
break;
}
j++;
}
if (j == insert) {
index[insert] = index_temp;
value[insert++] = value_temp;
}
}
while (1) {
IndexMin = 11111112;
for (i = 0; i < 500; i++) {
if (index[i] < IndexMin) {
IndexMin = index[i];
}
}
if (IndexMin == 11111112) {
break;
}
for (i = 0; i < 500; i++) {
if (index[i] == IndexMin) {
printf("%d %d\n", index[i], value[i]);
index[i] = 11111112;
}
}
}
return 0;
}