航空公司VIP客戶查詢

2021-09-24 18:07:18 字數 2003 閱讀 5260

不少航空公司都會提供優惠的會員服務,當某顧客飛行里程累積達到一定數量後,可以使用里程積分直接兌換獎勵機票或獎勵公升艙等服務。現給定某航空公司全體會員的飛行記錄,要求實現根據身份證號碼快速查詢會員里程積分的功能。

輸入格式:

輸入首先給出兩個正整數n(≤10​的5次方 )和k(≤500)。其中k是最低里程,即為照顧乘坐短程航班的會員,航空公司還會將航程低於k公里的航班也按k公里累積。隨後n行,每行給出一條飛行記錄。飛行記錄的輸入格式為:18位身份證號碼(空格)飛行里程。其中身份證號碼由17位數字加最後一位校驗碼組成,校驗碼的取值範圍為0~9和x共11個符號;飛行里程單位為公里,是(0, 15 000]區間內的整數。然後給出乙個正整數m(≤10的​5次方),隨後給出m行查詢人的身份證號碼。

輸出格式:

對每個查詢人,給出其當前的里程累積值。如果該人不是會員,則輸出no info。每個查詢結果佔一行。

輸入樣例:

4 500

330106199010080419 499

110108198403100012 15000

120104195510156021 800

330106199010080419 1

4120104195510156021

110108198403100012

330106199010080419

33010619901008041x

輸出樣例:

80015000

1000

no info

字串hash+分離式鏈結法

自己首先的思想:先開乙個陣列,裡面只儲存指標。但是沒法搞啊。因為,我們首先要先定義他的長度,在輸入n,但是我們定義長度是根據n定義的,所以不行啊。

於是就有了動態開陣列。

ptr *data;//相當於node **data;首先(*data)是乙個指向node的指標,其次

*data可以理解為陣列,不過是指向他第乙個空間的位址

tep->data=(ptr*)malloc(sizeof(ptr)*size);//malloc前面的引數ptr*,說明data

是乙個指向ptr型的指標,後面sizeof(ptr)也能說明。

錯誤:當時寫成tep->data=(ptr*)malloc(sizeof(node)*size)然後下面的初始化就變為了tep->data[i]->next=null;報錯了。

錯誤原因:不理解ptr *data的含義,陣列裡面的元素是指標。而自己認為還是node,而不是指標。

其次,至於初始化,雖然我們有tep->data=(ptr*)malloc(sizeof(node)*size),但只是開了指標的大小,但是指標沒有指向任何空間。所以tep->data[i]->next=null;報錯了

#include#include#includetypedef struct node node;

typedef node *ptr;

typedef struct hash*hash;

struct node;

int findprime(int n)//找到tablesize的大小,是乙個素數

} if(!flag) return n;

n+=2; }}

hash creathash(int n)//建立hash表

return tep;

}int hashpy(char *id,hash ha)

return ans;

}ptr find(hash ha,char *id,int num)

p=p->next;

} return p;

}void insert(hash ha,char *id,int len,int num)

else tep->len+=len;

}int main(void)

return 0;

}

航空公司VIP客戶查詢

5 12 航空公司vip客戶查詢 25分 不少航空公司都會提供優惠的會員服務,當某顧客飛行里程累積達到一定數量後,可以使用里程積分直接兌換獎勵機票或獎勵公升艙等服務。現給定某航空公司全體會員的飛行記錄,要求實現根據身份證號碼快速查詢會員里程積分的功能。輸入首先給出兩個正整數n n le 10 5 1...

航空公司VIP客戶查詢

think 用stl水的,開乙個map string,int 來儲存,輸入的時候判斷里程len是否大於給定的k值,輸出時判斷是否為0。不少航空公司都會提供優惠的會員服務,當某顧客飛行里程累積達到一定數量後,可以使用里程積分直接兌換獎勵機票或獎勵公升艙等服務。現給定某航空公司全體會員的飛行記錄,要求實...

航空公司VIP客戶查詢

航空公司vip客戶查詢 不少航空公司都會提供優惠的會員服務,當某顧客飛行里程累積達到一定數量後,可以使用里程積分直接兌換獎勵機票或獎勵公升艙等服務。現給定某航空公司全體會員的飛行記錄,要求實現根據身份證號碼快速查詢會員里程積分的功能。輸入首先給出兩個正整數n 10 5 和k 500 其中k是最低里程...