我的思路:想到了猜拳比赛那道题 把相关数据通过数组下标联系起来,从而实现快速查询。(hhh 也很搞不懂为什么我第一次想要用字符串存储Id longlong不香吗 以后一定要好好搞字符串hhh)
优化思路:我是两个数组联系起来,其实可以进一步想到用结构体进行封装。不妨设结构体Student记录考生的准考证号和座位号。用试机座位号记录下标。
优化代码:
#include <iostream>
#include <cstring>
using namespace std;
const int maxn=1000;
struct Stdent
{
long long ID;
int examSeat; //考试座位号
}testSeat[maxn];
int main()
{
int n,m,seat,examseat;
long long id;
scanf("%d",&n); //考生人数
for(int i=1;i<=n;i++)
{
scanf("%lld %d %d",&id,&seat,&examseat);
testSeat[seat].ID=id;
testSeat[seat].examSeat=examseat;
}
scanf("%d",&m); //查询个数
for(int i=0;i<m;i++)
{
scanf("%d",&seat);
printf("%lld %d\n",testSeat[seat].ID,testSeat[seat].examSeat);
}
return 0;
}
我的代码 好丑啊我的天 这个命名这个格式。。。
#include <iostream>
#include <cstdio>
#define Max=1000
int main()
{
int N;//
scanf("%d",&N);
long long Id;
long long Nu[N];
int K[N]; //考试座位数组
int s,k; //输入试机座位号,考试座位号
while(N--)
{
scanf("%lld %d %d",&Id,&s,&k);
K[s]=k;
Nu[s]=Id;
}
int M;
scanf("%d",&M);
int x;
for(int i=1; i<=M; i++)
{
scanf("%d",&x);
printf("%lld %d\n",Nu[x],K[x]);
}
return 0;
}