换座位题解
2024-06-25 21:23:07
发布于:浙江
28阅读
0回复
0点赞
思路
首先,创建一个结构体 :
struct Node
{
int k;
string s;
} a [1005];
其中, 代表学号, 代表学生名字。
而每个结构体的下标(当前的座位编号)用 来表示, 表示座位号为 的学生学号, 表示座位号为 的学生名字。
然后,我们要用 数组储存小标 ,令 ,之后,对于第 次交换,输入 ,交换 与 ,令 ,再交换 与 即可。
代码:
#include <bits/stdc++.h>
#include <cstdio>
#define int long long
using namespace std;
int b [1005];
struct Node
{
int k;
string s;
} a [1005];
signed main ()
{
ios :: sync_with_stdio (false);
cin.tie (0),cout.tie (0);
int n,k;
cin >> n >> k;
for (int i = 0;i < n;i ++)
{
int k,x;
string s;
cin >> k >> s >> x;
a [x].k = k;
a [x].s = s;
b [k] = x;
}
for (int i = 1;i <= k;i ++)
{
int tx,ty;
cin >> tx >> ty;
swap (b [tx],b [ty]);
a [b [tx]].k = tx;
a [b [ty]].k = ty;
swap (a [b [tx]].s,a [b [ty]].s);
}
for (int i = 0;i < n;i ++) cout << a [i].k << ' '<< a [i].s << ' ' << i << endl;
return 0;
}
全部评论 1
好像比AC君的更简单
2024-06-25 来自 浙江
0
有帮助,赞一个