酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

描述 组织一场考试时,监考老师手里会有一份签到表,按座位号的顺序列出学生。但学生要根据这份表找到自己的座位编号就很麻烦了。本题就要求你编写程序,帮助学生快速找到他们的座位号。时间限制:5000内存限制:65535 输入 输入第一行给出一个不超过103的正整数n,是参加考试的学生数。以下n行,第i行给出座位号为i的学生的学号(i=1,..., n)。学号是一个不超过8位、完全由数字组成的字符串。输入保证每个学生只分配一个座位。接下来一行给出一个不超过105 的正整数 m,是待查询的学生数。以下m行,每行给出一个待查询的学生的学号。 输出 对每一个待查询的学生,如果他在考场里有座位,则在一行中输出其座位号;否则输出‘na`(not available的缩写),表示座位号不存在。 样例输入5 1000132002331000015200778867594 520077000000100013999999 样例输出4 na1 na 用c++初学者的方法写

好的,下面是一个用C++编写的程序,它可以帮助学生快速找到他们的座位号。这个程序使用了基本的数据结构和算法,适合C++初学者理解。 ```cpp #include <iostream> #include <vector> #include <string> #include <unordered_map> using namespace std; int main() { int n; cin >> n; // 使用 unordered_map 存储座位号和学号的对应关系 unordered_map<string, int> seatMap; for (int i = 1; i <= n; ++i) { string studentID; cin >> studentID; seatMap[studentID] = i; } int m; cin >> m; for (int i = 0; i < m; ++i) { string queryID; cin >> queryID; if (seatMap.find(queryID) != seatMap.end()) { cout << seatMap[queryID] << endl; } else { cout << "na" << endl; } } return 0; } ``` 代码解释 1. 输入部分: - 首先读取学生人数 `n`。 - 然后读取每个学生的学号,并将其与座位号存储在一个 `unordered_map` 中。`unordered_map` 是一个哈希表,可以快速查找键值对。 2. 查询部分: - 读取待查询的学生人数 `m`。 - 对于每个待查询的学号,检查其是否在 `unordered_map` 中存在。 - 如果存在,输出对应的座位号;如果不存在,输出 `na`。 为什么使用 `unordered_map`? - `unordered_map` 是一个哈希表,可以在平均情况下以常数时间复杂度 \(O(1)\) 进行查找操作。这对于处理大量的查询非常高效。 - 相比于使用 `map`(红黑树实现),`unordered_map` 在查找速度上通常更快,尤其是在数据量较大的情况下。 注意事项 - 输入和输出的格式需要严格遵循题目要求。 - 确保输入的学号和座位号正确无误,避免出现输入错误导致程序出错。 希望这个程序对你有帮助!如果有任何问题或需要进一步的解释,请随时提问。 [2024-10-18 23:44:11 | AI写代码神器 | 498点数解答]

相关提问