【PAT】B1041 考试座位号 (15 分)_C++实现
作者:互联网
1041 考试座位号 (15 分)
1 题目
每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。
输入格式:
输入第一行给出一个正整数 N(≤1000),随后 N 行,每行给出一个考生的信息:准考证号 试机座位号 考试座位号
。其中准考证号
由 16 位数字组成,座位从 1 到 N 编号。输入保证每个人的准考证号都不同,并且任何时候都不会把两个人分配到同一个座位上。
考生信息之后,给出一个正整数 M(≤N),随后一行中给出 M 个待查询的试机座位号码,以空格分隔。
输出格式:
对应每个需要查询的试机座位号码,在一行中输出对应考生的准考证号和考试座位号码,中间用 1 个空格分隔。
输入样例:
4
3310120150912233 2 4
3310120150912119 4 1
3310120150912126 1 3
3310120150912002 3 2
2
3 4
输出样例:
3310120150912002 2
3310120150912119 1
2 解答
C++:
思路:考虑输入的信息,准考证号16位、试机位、座位号、查找试机号。
初步想法是用三个int数组来分别存放准考证号、试机位、座位号,数组长度设置为1000,且准考证号要long long int类型。以及一个数组来存放查找试机号。
输入结束后,作者想法是遍历查找试机号的数组,与试机位数组对比,如果相同则输入。时间复杂度O(n^2)
最后一个输出做特殊处理。
你有好的想法,欢迎贡献。谢谢
#include<iostream>
using namespace std;
int main()
{
int N, M;
int arr_get[1000] = {0}; // 待查找座位号
long long int arr[1000] = { 0 }; // 存放边界值N=10000;以及准考证座位号18位数
int arr_test_seat[1000] = { 0 }; // 存放试机位
int arr_seat[1000] = { 0 }; // 存放座位
cin >> N;
/*输入座位信息 准考证号*/
for (int i = 0; i < N; i++)
{
cin >> arr[i];
cin >> arr_test_seat[i];
cin >> arr_seat[i];
}
/*输入待查找信息*/
cin >> M;
for (int i = 0; i < M; i++)
{
cin >> arr_get[i];
}
/*查找开始,遍历查找*/
for (int i = 0; i < M - 1; i++)
{
int tem;
tem = arr_get[i];
for (int j = 0; j < N; j++)
{
if (tem == arr_test_seat[j])
{
cout << arr[j] << " " << arr_seat[j] << "\n";
}
}
}
/*最后一个输出做特殊处理*/
int i = M - 1;
int tem;
tem = arr_get[i];
for (int j = 0; j < N; j++)
{
if (tem == arr_test_seat[j])
{
cout << arr[j] << " " << arr_seat[j] << endl;
}
}
}
3 测评
图 1 测 评 结 果 图1~测评结果 图1 测评结果
标签:arr,15,准考证号,试机,int,C++,B1041,座位,座位号 来源: https://blog.csdn.net/t4ngw/article/details/123607623