正经题解|换座位
2024-06-24 11:06:53
发布于:浙江
80阅读
0回复
0点赞
换座位
题目分析
这题需要用到结构体去存储每一位学生的信息。开一个结构体数组将所有学生的信息存储进来。
对于每个交换给出的两个学号,实际上我们要找到这两个学生存储的位置,也就是说需要将学号与学生信息做映射关系,这个可以用map
去做。
注意的是我们需要记录学生信息的地址,所以要存指针,后续做交换才能影响到数组中的数据。
AC代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
struct p {
string xId,name;
int b;
}a[N];
bool cmp(p x,p y) {
return x.b < y.b;
}
int main(){
int n;
cin >> n;
map<string,p*> mp;
for(int i=1;i<=n;i++) {
cin >> a[i].xId >> a[i].name >> a[i].b;
mp[a[i].xId] = &a[i];
}
int k;
cin >> k;
for(int i=1;i<=k;i++) {
string x,y;
cin >> x >> y;
swap(mp[x]->b,mp[y]->b);
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++) {
cout << a[i].xId << " " << a[i].name << " " << a[i].b << endl;
}
return 0;
}
全部评论 1
这题不用map吧
2024-06-28 来自 浙江
0
有帮助,赞一个