题解 | #合并表记录#

合并表记录

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;
}

全部评论

相关推荐

移动云能力 苏小妍 总包多3w左右
点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务