今天是PTA题库解法讲解的第十一天,今天我们要讲解 电话聊天狂人,题目如下:
解题代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_RECORDS 100000
typedef struct {
char phone[12];
int count;
} Record;
Record records[MAX_RECORDS];
int recordCount = 0;
int cmp(const void *a, const void *b) {
return strcmp(((Record *)a)->phone, ((Record *)b)->phone);
}
void addRecord(char phone[]) {
for (int i = 0; i < recordCount; i++) {
if (strcmp(records[i].phone, phone) == 0) {
records[i].count++;
return;
}
}
strcpy(records[recordCount].phone, phone);
records[recordCount].count = 1;
recordCount++;
}
int main() {
int N;
scanf("%d", &N);
for (int i = 0; i < N; i++) {
char phone1[12], phone2[12];
scanf("%s %s", phone1, phone2);
addRecord(phone1);
addRecord(phone2);
}
qsort(records, recordCount, sizeof(Record), cmp);
int maxCount = 0, crazyCount = 1;
char minPhone[12];
strcpy(minPhone, records[0].phone);
for (int i = 0; i < recordCount; i++) {
if (records[i].count > maxCount) {
maxCount = records[i].count;
strcpy(minPhone, records[i].phone);
crazyCount = 1;
} else if (records[i].count == maxCount) {
crazyCount++;
}
}
printf("%s %d", minPhone, maxCount);
if (crazyCount > 1) printf(" %d", crazyCount);
printf("\n");
return 0;
}
今天的题解到此为止~