C练题笔记之:牛客-HJ008.合并表记录

题目:

描述

数据表记录包含表索引和数值(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。

输入描述:

先输入键值对的个数
然后输入成对的index和value值,以空格隔开

输出描述:

输出合并后的键值对(多行)

示例1

输入:

4
0 1
0 2
1 2
3 4

复制输出:

0 3
1 2
3 4

结果:
C练题笔记之:牛客-HJ008.合并表记录_第1张图片

解题思路:

定义一个数组,下标用于对应index,里面存放的数字就是value。一开始value都为0。

获取每一组数据之后,将value存放到对应的index下表的数组中。最后遍历数组。输出不为0的,并且输出后置0,为下一次使用做准备。

代码:

#include 

int main() {
    int count, value, index;
    unsigned int nums[1024] = {0};
    
    while(scanf("%d", &count) != EOF) {
        for(int i = 0; i < count; i++) {
            scanf("%d %d", &index, &value);
            nums[index] += value;
        }
        for(int i = 0; i<1024; i++) {
            if(nums[i] > 0) {
                printf("%d %d\n", i, nums[i]);
                nums[i] = 0;
            }
        }
    }
    return 0;
}

 

你可能感兴趣的:(C语言刷题笔记:牛客-中等,c语言)