题解 | #合并表记录#
合并表记录
https://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201
#include <iostream>
using namespace std;
int main() {
//方法一:思路没问题,但是空间过大报错
// int index[11111112]={0};
// int num;
// cin>>num;
// int temp;
// int value;
// for(int i =0;i<num;i++)
// {
// cin>>temp;
// cin>>value;
// index[temp]=index[temp]+value;
// }
// for(int i;i<11111112;i++)
// {
// if(index[i])
// {
// cout<<i<<' '<<index[i]<<endl;
// }
// }
int index[501] = {0};
int value[501] = {0};
int newindex[501] = {0};
int newvalue[501] = {0};
int temp1;
int temp2;
int temp3 = 0;
int lenth = 0;
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> temp1;
cin >> temp2;
index[i] = temp1;
value[i] = temp2;
}//逐一输入
for (int i = 0; i < n; i++) { //两个数组按index值大小排序
for (int j = i + 1; j < n; j++) {
if (index[i] > index[j]) {
temp3 = value[i];
value[i] = value[j];
value[j] = temp3;
temp3 = index[i];
index[i] = index[j];
index[j] = temp3;
}
}
}
for (int i = 0; i < n; i++) {
if (index[i] == index[i - 1]) {
newvalue[lenth] = newvalue[lenth] + value[i];
} else {
newindex[++lenth] = index[i];
newvalue[lenth] = value[i];
}
}
for (int i = 1; i < lenth + 1; i++) {
cout << newindex[i] << ' ' << newvalue[i] << endl;
}
}
查看18道真题和解析