PAT (Basic Level) Practice
**
*绿林——JAVA语言 *
**
1041 考试座位号 (15分)
每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。
输入样例:
4
3310120150912233 2 4
3310120150912119 4 1
3310120150912126 1 3
3310120150912002 3 2
2
3 4
输出样例:
3310120150912002 2
3310120150912119 1
题目直达
题目分析:
这道题分值不高,没有什么难点,还是关联查询问题。因为在做题时我还对JAVA定义结构体功能的部分了解不深,所以依旧用了数组的方式。但为了时间和代码的精简,对代码进行了一定的优化。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.valueOf(in.readLine());
//为了更快
long[][] students = new long[N][3]; // 所有学生信息
for (int i = 0; i < N; i++) {
String[] line = in.readLine().split(" ");
students[i][0] = Long.valueOf(line[0]);
students[i][1] = Long.valueOf(line[1]);
students[i][2] = Long.valueOf(line[2]);
}
int M = Integer.valueOf(in.readLine());
String[] sjzwhs = in.readLine().split(" "); // 所有试机座位号
for (int i = 0; i < M; i++) {
int sjzwh = Integer.valueOf(sjzwhs[i]); // 当前试机座位号
for (int j = 0; j < students.length; j++) {
if (sjzwh == students[j][1]) {
System.out.println(students[j][0] + " " + students[j][2]);
break; // 找到了就退出当前循环,找下一个考生
}
}
}
}
}
测试结果:
题目重点:
没有很难的地方,但题目值得优化的地方比较多。