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