题解 | #合并表记录#
合并表记录
https://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201
#include <iostream>
//这题解决的时间有一点长,但是思考边输入数据边处理的方法非常锻炼思维
using namespace std;
struct dataTable{
int index;
int value;
};
dataTable a[500],temp;
int main()
{
//初始化数组
for(int i=0;i<500;i++){
a[i].index=-1;
a[i].value=0;
}
int n;
cin>>n;
int c,d,num=-1;
for(int i=0,k=0;k<n;i++,k++){
cin>>c>>d;
a[i].index=c;
a[i].value=d;
for(int j=0;j<i;j++){
if(a[i].index==a[j].index){
a[j].value+=a[i].value;
//格式化a[j]
a[i].index=-1;
a[i].value=0;
i--; //a[i]仍然可以放入新数据
break;
}
else if(a[i].index<a[j].index){ //边比较边把index小的交换到前面
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
if(k==n-1) num=i+1;
}
//输出
for(int i=0;i<num;i++){
if(a[i].index!=-1){
cout<<a[i].index<<" "<<a[i].value<<endl;
}
}
}

查看13道真题和解析