引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中國電腦學會(CCF)發起的“電腦職業資格認證”考試,針對電腦軟體開發、軟體測試、信息管理等領域的專業人士進行能力認證。認證對象是從事或將要從事IT領域專業技術與技術管理人 ...
引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中國電腦學會(CCF)發起的“電腦職業資格認證”考試,針對電腦軟體開發、軟體測試、信息管理等領域的專業人士進行能力認證。認證對象是從事或將要從事IT領域專業技術與技術管理人員,以及高校招考研究生的覆試對象。
l 問題描述
濤濤最近要負責圖書館的管理工作,需要記錄下每天讀者的到訪情況。每位讀者有一個編號,每條記錄用讀者的編號來表示。給出讀者的來訪記錄,請問每一條記錄中的讀者是第幾次出現。
l 輸入格式
輸入的第一行包含一個整數n,表示濤濤的記錄條數。
第二行包含n個整數,依次表示濤濤的記錄中每位讀者的編號。
l 輸出格式
輸出一行,包含n個整數,由空格分隔,依次表示每條記錄中的讀者編號是第幾次出現。
l 樣例輸入
5
1 2 1 1 3
l 樣例輸出
1 1 2 3 1
l 評測用例規模與約定
1≤n≤1,000,讀者的編號為不超過n的正整數。
l 源代碼
1 # include <stdio.h> 2 # include <stdlib.h> 3 # include <memory.h> 4 5 struct MyData { 6 int key; 7 int value; 8 }; 9 10 int main(void) 11 { 12 int n; //個數 13 int flag = 1; 14 int count = 0; 15 scanf("%d", &n); 16 17 int *input = (int *)malloc(sizeof(int) * n); 18 memset(input, 0, sizeof(int) * n); 19 struct MyData *temp = (struct MyData *)malloc(sizeof(struct MyData) * n); 20 memset(temp, 0, sizeof(struct MyData) * n); 21 22 for (int i = 0; i < n; i++) 23 { 24 scanf("%d", input+i); 25 } 26 27 for (int i = 0; i < n; i++) 28 { 29 for (int j = 0; j < count; j++) 30 { 31 if (input[i] == temp[j].key) 32 { 33 temp[j].value += 1; 34 count += 1; 35 flag = 0; 36 if (i == n-1) 37 { 38 printf("%d\n", temp[j].value); 39 } 40 else 41 { 42 printf("%d ", temp[j].value); 43 } 44 break; 45 } 46 } 47 if (flag) 48 { 49 temp[count].key = input[i]; 50 temp[count].value = 1; 51 if (i == n-1) 52 { 53 printf("%d\n", temp[count].value); 54 } 55 else 56 { 57 printf("%d ", temp[count].value); 58 } 59 count += 1; 60 } 61 flag = 1; 62 } 63 64 free(input); 65 free(temp); 66 67 return 0; 68 }