题解
2026-07-15 20:51:07
发布于:湖南
15阅读
0回复
0点赞
题意
给定 位选手信息,每条包含编号(两位、含前导 ,数组已按编号升序排好)、姓名、性别、年龄;
随后 次查询,每次输入一个选手编号,输出对应选手全部信息;找不到则输出 No Answer!。
思路
建立结构体存储:编号、姓名、性别、年龄;
读取 条选手数据存入数组;
使用二分查找(数据已经有序),根据查询编号匹配结构体中的编号;
找到则按格式输出信息;未找到输出 No Answer!。
完整代码
#include <bits/stdc++.h>
using namespace std;
struct P {
int idx, x;
string y, z;
};
int n,q;
P a[100];
int bs(int x) {
int l = 0, r = n + 1, mid;
while (l+1 < r) {
mid = (l + r) / 2;
if (a[mid].idx == x) return mid;
if (a[mid].idx > x) r = mid;
else l = mid;
}
return -1;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i].idx >> a[i].y >> a[i].z >> a[i].x;
cin >> q;
while (q--) {
int x;
cin >> x;
int l = bs(x);
if (l == -1) {
cout << "No Answer!\n";
continue;
}
printf("%02d %s %s %d\n", x, a[l].y.c_str(), a[l].z.c_str(), a[l].x);
}
return 0;
}

这里空空如也








有帮助,赞一个