题解 | 合并表记录

/* 用哈希的方法会导致用内存超过要求,所以只能先存再排序,但是存的时候就可以做合并操作,减少循环次数 */
#include <stdio.h>
#define LEN 501
typedef struct data_s{
    int idx;
    int val;
}data_t;
int main() {
    int n;
    data_t data[LEN] = {-1};
    data_t t;
    int a1,a2;
    scanf("%d", &n);
    int i,j;
    int find = 0;

    for (i = 0; i < n; i++) {
        find = 0;
        data[i].idx = -1;
        scanf("%d %d", &a1, &a2);
        for (j = 0; j < i; j++) {
            if (data[j].idx == a1) {
                data[j].val += a2;
                find = 1;
            }
        }

        if (find == 0) {
            data[i].idx = a1;
            data[i].val = a2;
        }
    }

    for (i = 0; i < n; i++) {
        for (j = i+1; j < n; j++) {
            if (data[i].idx > data[j].idx) {
                t = data[i];
                data[i] = data[j];
                data[j] = t;
            }
        }
    }

    for (int i = 0; i < n; i++) {
        if (data[i].val > 0) {
            printf("%d %d \r\n", data[i].idx, data[i].val);
        }
    }
    return 0;
}

全部评论

相关推荐

码农索隆:这种hr,建议全中国推广
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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