题解 | #合并表记录#
合并表记录
https://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201
#include <stdio.h>
int main() {
long int num, input[500][2], temp[500][2], output[500] = {0}, swap, swap2,
count = 0,
cout = 0;
scanf("%ld", &num);
for (int i = 0; i < num; i++) {
scanf("%ld%ld", &input[i][0], &input[i][1]);
}
for (int i = 0; i < num;
i++) {//相同的求和,并把后面值的置0做标记
for (int j = i + 1; j < num; j++) {
if (input[i][0] == input[j][0]) {
input[i][1] += input[j][1];
input[j][1] = 0;
}
}
}
for (int i = 0; i < num; i++) {//去掉value为0的
if (input[i][1]) {
temp[count][1] = input[i][1];
temp[count][0] = input[i][0];
count++;
}
}
for (int i = 0; i < count - 1; i++) { //冒泡排序
for (int j = 0; j < count - 1 - i; j++) {
if (temp[j][0] > temp[j + 1][0]) {
swap = temp[j][0];
swap2 = temp[j][1];
temp[j][0] = temp[j + 1][0];
temp[j][1] = temp[j + 1][1];
temp[j + 1][0] = swap;
temp[j + 1][1] = swap2;
}
}
}
for (int i = 0; i < count; i++) {
printf("%ld %ld\n", temp[i][0], temp[i][1]);
}
}