题解 | #合并表记录#

合并表记录

https://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201

#include <stdio.h>
#include <stdbool.h>
#include <string.h>
typedef struct Data {
    int flag;
    int index;
    int value;
} Data;
int main() {
    int index_num;
    int value_num;
    int top = 0, num;
    int len = 500;
    void bubble_sort(Data data[], int n);
    scanf("%d", &num);
    Data data[num];
    memset(data, 0, sizeof(data));
    for (int i = 0; i < num; i++) {
        scanf("%d %d", &index_num, &value_num);
        if (data[top].flag == 0 || data[top].index == index_num) {
            if (data[top].flag == 0) {
                data[top].flag = 1;
            }
            data[top].index = index_num;
            data[top].value += value_num;
        } else {
            top++;
            data[top].flag = 1;
            data[top].index = index_num;
            data[top].value += value_num;
        }
    }
    bubble_sort(data, num);

    for (int i = 0; i < num - 1; i++) {
        for (int j = i + 1; j < num; j++) {
            if (data[i].index == data[j].index) {
                data[i].value += data[j].value;
                data[j].value = 0;
            }
        }
    }

    for (int i = 0; i < num; i++) {
        if (data[i].value != 0) {
            printf("%d %d\n", data[i].index, data[i].value);
        }
    }

    return 0;
}
void bubble_sort(Data A[], int n) {
    bool flag;
    Data temp;
    for (int i = 0; i < n - 1; i++) {
        flag = false;
        for (int j = n - 1; j > i; j--) {
            if (A[j].index < A[j - 1].index) {
                temp = A[j];
                A[j] = A[j - 1];
                A[j - 1] = temp;
                flag = true;
            }
        }
        if (flag == false)
            return;
    }
}

全部评论

相关推荐

迷茫的大四🐶:💐孝子启动失败,改为启动咏鹅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务