题解 | #合并表记录#

合并表记录

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

#include <stdio.h>
typedef struct Table {
    int idx;
    int val;
} table;

int main() {
    int n, a, b, i = 0, j = 0, tmp;
    scanf("%d", &n);
    table tbl[n];
    //printf("sizeof(tbl)=%ld %ld %ld\n", sizeof(tbl), sizeof(table), sizeof(int));
    while (scanf("%d %d", &a, &b) != EOF) {
        tbl[i].idx = a;
        tbl[i].val = b;
        //printf("tbl[%d]=%d %d\n", i, tbl[i].idx, tbl[i].val);
        i++;
    }
    for (i = 0; i < n - 1; i++) {
        for (j = i + 1; j < n; j++) {
            if (tbl[i].idx == tbl[j].idx) {
                tbl[i].val += tbl[j].val;
                tbl[j].val = 0;
                //printf("i tbl[%d]=%d %d\n", i, tbl[i].idx, tbl[i].val);
                //printf("j tbl[%d]=%d %d\n", j, tbl[j].idx, tbl[j].val);
            }
        }
    }
    for (i = 0; i < n - 1; i++) {
        for (j = i + 1; j < n; j++) {
            if (tbl[i].idx > tbl[j].idx) {
                tmp = tbl[i].idx;
                tbl[i].idx = tbl[j].idx;
                tbl[j].idx = tmp;
                tmp = tbl[i].val;
                tbl[i].val = tbl[j].val;
                tbl[j].val = tmp;            
            }
        }
    }
for (i = 0; i < n; i++){
    //printf("tbl[%d]=%d %d\n", i, tbl[i].idx, tbl[i].val);
    if(tbl[i].val != 0)
        printf("%d %d\n", tbl[i].idx, tbl[i].val);
}
    return 0;
}

全部评论

相关推荐

Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
牛舌:如果我不想去,不管对方给了多少,我一般都会说你们给得太低了。这样他们就会给下一个offer的人更高的薪资了。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务