题解 | #合并表记录#

合并表记录

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

#include<stdio.h>
typedef struct
{
    int index;
    int value;
}DATA;

int main(void)
{
    int n;
    scanf("%d", &n);
    DATA data[500];
    DATA temp;
    int i = 0;
    for (i = 0; i < n; i++)//输入键值对
    {
        scanf("%d %d", &data[i].index, &data[i].value);
    }
    for (i = 0; i < n - 1; i++)//升序
    {
        for (int j = 0; j < n - 1 - i; j++)
        {
            if (data[j].index > data[j + 1].index)
            {
                temp = data[j];
                data[j] = data[j + 1];
                data[j + 1] = temp;
            }
        }
    }
    for (i = 0; i < n; i++)//去掉重复的index
    {
        for (int j = i + 1; j < n; j++)
        {
            if (data[i].index == data[j].index)
            {
                data[i].value += data[j].value;
                for (int k = j; k < n-1; k++)
                {
                    data[k] = data[k + 1];    
                }
                n--;
                j--;//data[j]已经被原来的data[j+1]替换掉了,所以j--;
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        printf("%d %d\n", data[i].index, data[i].value);
    }

    return 0;
}
全部评论

相关推荐

迷茫的大四🐶:那你问他上班之后老实了没
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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