题解 | #合并表记录#

合并表记录

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

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务