题解 | #合并表记录#
合并表记录
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]); } }