L1-005 考试座位号(15分)[java][python]

3 阅读3分钟

题目描述

每位考生参加考试时都会被分配一个唯一的座位号。考试结束后,按座位号从小到大的顺序输出所有考生的准考证号和试机座位号。

输入输出格式

输入

  • 第一行:一个正整数 N,表示考生人数
  • 接下来 N 行:每行包含一个准考证号(17位字符串)和一个试机座位号(正整数)
  • 最后一行:一个正整数 M,表示查询的个数
  • 接下来 M 行:每行包含一个准考证号

输出

  • 对于每个查询,输出一行,包含该考生的准考证号和试机座位号
  • 如果找不到对应的考生,输出 "Not Found"

样例

输入

3
1012020043221 1001
1012020043222 1002
1012020043223 1003
2
1012020043221
1012020043224

输出

1012020043221 1001
Not Found

解题思路

这是一道简单的查找问题:

  1. 使用 HashMap 存储考生信息,key 为准考证号,value 为试机座位号
  2. 读取所有考生信息存入 HashMap
  3. 根据查询的准考证号从 HashMap 中查找并输出

注意:由于 HashMap 的查找时间复杂度是 O(1),这种方法效率很高。

代码实现

Java

import java.util.HashMap;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        HashMap<String, Integer> map = new HashMap<>();
        
        for (int i = 0; i < n; i++) {
            String id = scanner.next();
            int seat = scanner.nextInt();
            map.put(id, seat);
        }
        
        int m = scanner.nextInt();
        for (int i = 0; i < m; i++) {
            String query = scanner.next();
            if (map.containsKey(query)) {
                System.out.println(query + " " + map.get(query));
            } else {
                System.out.println("Not Found");
            }
        }
    }
}

Python

n = int(input())
seat_map = {}
for _ in range(n):
    parts = input().split()
    exam_id = parts[0]
    seat = int(parts[1])
    seat_map[exam_id] = seat

m = int(input())
for _ in range(m):
    query = input().strip()
    if query in seat_map:
        print(f"{query} {seat_map[query]}")
    else:
        print("Not Found")

运行验证

Java

输入: 3
1012020043221 1001
1012020043222 1002
1012020043223 1003
2
1012020043221
1012020043224
输出:
1012020043221 1001
Not Found

Python

输入: 3
1012020043221 1001
1012020043222 1002
1012020043223 1003
2
1012020043221
1012020043224
输出:
1012020043221 1001
Not Found

复杂度分析

  • 时间复杂度:O(N + M),N 为考生人数,M 为查询次数
  • 空间复杂度:O(N),需要存储所有考生信息

总结

本题考查 HashMap(字典)的使用。通过 HashMap 建立准考证号到试机座位号的映射,可以实现高效的查找。注意 Java 中使用 HashMap<String, Integer>,Python 中使用字典实现相同功能。本题难度不大,属于基础数据结构应用题。