题解 | #合并表记录#
合并表记录
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]);
}
}
}
}
