题解 | #合并表记录#
合并表记录
https://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201
#include <stdio.h> int main() { int n; scanf("%d", &n); int dict[n][2]; // 二元数组记录键值对 for (int i = 0; i < n; i++) { scanf("%d %d", &dict[i][0], &dict[i][1]); } // 对键排序 for (int i = 0; i < n; i++) { for (int j = 0; j < n - i - 1; j++) { if (dict[j][0] > dict[j + 1][0]) { int temp = dict[j][0]; dict[j][0] = dict[j + 1][0]; dict[j + 1][0] = temp; temp = dict[j][1]; dict[j][1] = dict[j + 1][1]; dict[j + 1][1] = temp; } } } // 当键发生变化时,将所有键相同的值相加,并打印 int index = 0; for (int i = 0; i < n; i++) { if (dict[i][0] != dict[i+1][0]) { for (int j = index + 1; j < i+1; j++) { dict[index][1] += dict[j][1]; } printf("%d %d\n", dict[index][0], dict[index][1]); index = i + 1; } } return 0; }