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