B1041 考試座位號 15分
題目描述:

思路:
①:出現連接體資訊時,使用結構體存盤就更方便些,利用結構體存盤準考證號,試機座位號,考試座位號,這樣就能通過一個資訊直接獲取對應考生的其他兩個資訊了,
②:準考證號是16位數字,因此我們要用long long(最大可到10的十八次方) 來存盤準考證號,
代碼描述:
#include<cstdio>
struct node{
long long a,b,c;
}e[1005];
int main()
{
int n,m,k;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%lld %lld %lld",&e[i].a,&e[i].b,&e[i].c);
}
scanf("%d",&m);
for(int i=1;i<=m;i++){
scanf("%d",&k);
for(int j=1;j<=n;j++){
if(k==e[j].b) {
printf("%lld %lld\n",e[j].a,e[j].c);
break;
}
}
}
return 0;
}
此程式時間復雜度為O(n*m),
那么如何把時間復雜度降到O(n)呢?
思路:
直接把試機座位號作為陣列的下標,這樣每輸入一個試機座位號就能夠直接獲取相對應考試的準考證號和考試座位號了,
代碼描述:
#include<cstdio>
struct node{
long long a,c;
}e[1005];
int main()
{
int n,m,k;
scanf("%d",&n);
for(int i=1;i<=n;i++){
long long a,b,c;
scanf("%lld %lld %lld",&a,&b,&c);
e[b].a=a;
e[b].c=c;
}
scanf("%d",&m);
for(int i=1;i<=m;i++){
scanf("%d",&k);
printf("%lld %lld\n",e[k].a,e[k].c);
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/197303.html
標籤:其他
下一篇:【筆記】前端面試必備技巧——概述
