Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
1002为什么总是报Wrong Answer啊 测了很多数据都没问题的啊#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_PHONE_RECORD_COUNT = 1000 struct phone_record { char *phone; int count; }; struct phone_record *phons[1000]; int phoneCount = 0; char checkReflect(char c) { if (c >= '0' && c <= '9') return c; if (c == 'Q' || c == 'Z' || c == '-') return ' '; if (c < 'A' || c > 'Z') return ' '; if (c <= 'C') return '2'; if (c <= 'F') return '3'; if (c <= 'I') return '4'; if (c <= 'L') return '5'; if (c <= 'O') return '6'; if (c <= 'S') return '7'; if (c <= 'V') return '8'; if (c <= 'Y') return '9'; return ' '; } char *getPhone(const char *s) { char c; // 这里因为电话号码最多就7个数字+一个分隔符已经一个结尾表示共9个字符 char *ret = (char *)malloc(9); char *t = ret; while (c = *s++) { c = checkReflect(c); if (c == ' ') continue; *t++ = c; if (t - ret == 3) { *t++ = '-'; } } *t = '\0'; return ret; } void addRecord(char *phone) { int i = 0; struct phone_record *t_pr; for (i = 0 ; i < phoneCount ; i ++) { struct phone_record *pr = phons[i]; if (!strcmp(pr->phone, phone)) {// 为0表示相等 pr->count ++; break; } } if (i == phoneCount) { t_pr = (struct phone_record *)malloc(sizeof(struct phone_record)); t_pr->count = 1; t_pr->phone = (char *) malloc(9); strcpy(t_pr->phone, phone); phons[i] = t_pr; phoneCount ++; } } void sortRecords() { int i,j; for (i = 0 ; i < phoneCount ; i ++) { for (j = i + 1 ; j < phoneCount ; j ++) { struct phone_record *pr = phons[i]; struct phone_record *pr2 = phons[j]; if (strcmp(pr->phone, pr2->phone) > 0) { // 交换 struct phone_record *p = phons[i]; phons[i] = phons[j]; phons[j] = p; } } } } void printRecords() { int i = 0; int flag = 0; for (i = 0 ; i < phoneCount ; i ++) { struct phone_record *pr = phons[i]; if (pr->count <= 1) continue; printf("%s %d\n", pr->phone, pr->count); flag = 1; } if (flag == 0) { printf("No duplicates.\n"); } } int main() { // 数量 int i, size; char line[80]; char *p; scanf("%d", &size); for (i = 0 ; i < size ; i ++) { scanf("%s", line); p = getPhone(line); addRecord(p); } sortRecords(); printRecords(); } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator