题解 | #合并表记录#

合并表记录

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

#include <stdio.h>
typedef struct{
    long int d;
    long int v;
}key;
int main(){
     int n,i,j,k,flag=0;
     long int index,max=0;
     long int value;
     long int c=0;
    scanf("%d",&n);
            key map[n],temp;
            for(i=0;i<n;i++){
                map[i].d=0;
                map[i].v=0;
            }
            for(i=0;i<n;i++){
                scanf("%ld %ld",&map[i].d,&map[i].v);
                }
                for(i=0;i<n-1;i++)
            for(j=i+1;j<n;j++){
                    if(map[j].d==map[i].d){
                    map[i].v=map[i].v+map[j].v;
                   
                    for(k=j;k<n;k++)
                    map[k]=map[k+1];
                    n--;
                    j--;
                    }
            }
            for(i=0;i<n-1;i++){
                flag=0;
                for(j=0;j<n-1-i;j++)
                if(map[j].d>map[j+1].d){
                    temp=map[j];
                    map[j]=map[j+1];
                    map[j+1]=temp;
                    flag=1;
                }
                if(flag==0)
                break;
            }
            for(c=0;c<n;c++){
                    printf("%ld %ld\n",map[c].d,map[c].v);
            }
    

}

哈希表(溢出)

#include <stdio.h>

int main(){

int n,i;

long int index,max=0;

long int value;

long int c=0;

while(scanf("%d",&n)!=EOF){

long int map[101]={0};

for(i=0;i<n;i++){

scanf("%ld %ld",&index,&value);

map[index]=map[index]+value;

if(max<index)

max=index;

}

for(c=0;c<max;c++){

if(map[c]!=0){

printf("%ld %ld\n",c,map[c]);

}

}

}

}

全部评论

相关推荐

MinatoWu:是这样的,说的太对了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务