题解 | #合并表记录#

合并表记录

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

#include <stdio.h>
#include <stdlib.h>

void swap(int* a, int* b)
{
    int temp;
    temp = *b;
    *b = *a;
    *a = temp;
}

int main() {
    int num;
    scanf("%d",&num);
    int* keys = (int*) malloc(num*sizeof(int));
    int* values = (int*)malloc(num*sizeof(int));
    for(int i=0;i<num;i++)
    {
        int index,value;
        scanf("%d", &index);
        scanf("%d", &value);
        keys[i]=index;
        values[i]=value;
    }
    //合并
    for(int i=0;i<num;i++)
    {
        int index = keys[i];
        if(index==-1)
            continue;
        for(int j=i+1;j<num;j++)
        {
            if(keys[j]==index){
                keys[j]=-1;
                values[i]+=values[j];
                values[j] = 0;
            }
        }
    }
    //冒泡排序
    for(int i=0;i<num-1;i++)
    {
        int index = keys[i];
        for(int j=0;j<num-i-1;j++)
        {
            if(keys[j]>keys[j+1]){
                swap(keys+j,keys+j+1);
                swap(values+j,values+j+1);
            }
        }
    }


    for(int i=0;i<num;i++)
    {
        if(keys[i]<0)
            continue;
        else
            printf("%d %d\n",keys[i],values[i]);
    }

    free(keys);
    free(values);

    return 0;
}

全部评论

相关推荐

微风不断:兄弟,你把四旋翼都做出来了那个挺难的吧
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务