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 |
Re:谁帮忙看下啊...为什么为TLE啊!!!!In Reply To:谁帮忙看下啊...为什么为TLE啊!!!! Posted by:dangdangwang at 2009-12-30 22:02:43 > 用一链表存放输入电话号码和出现次数. > 建立链表的时候就是一有序链表. > 算算时间不至于超时的....郁闷 > #include "stdio.h" > #include "stdlib.h" > #include "string.h" > > struct telphone{ > long num; //电话号码 > long f; //出现次数 > struct telphone *next; > }; > > //字母映射(虽然QZ不出现,但是设置数值也没关系的) > int map[26] = {2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9}; > > void main() > { > int n; > char temp[20]; > struct telphone *head = NULL, *p, *pp; > int i, len; > long tel; > int flag = 0; > char output[7]; > scanf("%d", &n); > head = (struct telphone *)malloc(sizeof(struct telphone)); > head->next = NULL; > head->num = -1; > head->f = 1; > while(n--) > { > tel = 0; > scanf("%s", temp); > len = strlen(temp); > for(i = 0; i < len; i++) > { > if(temp[i] >= 'A' && temp[i] <= 'Z') tel = tel * 10 + map[temp[i] - 'A']; > else if(temp[i] >= '0' && temp[i] <= '9') tel = tel * 10 + temp[i] - '0'; > } > > if(!(head->next)) > { > p = (struct telphone *)malloc(sizeof(struct telphone)); > p->next = NULL; > p->num = tel; > p->f = 1; > head->next = p; > > pp = (struct telphone *)malloc(sizeof(struct telphone)); > pp->next = NULL; > pp->num = 10000000; > pp->f = 1; > p->next = pp; > } > else > { > p = head; > while(p && p->next) > { > if(tel >= p->num && tel < p->next->num) break; > else p = p->next; > } > if(p->num == tel) (p->f)++; > else > { > pp = (struct telphone *)malloc(sizeof(struct telphone)); > pp->next = p->next; > pp->num = tel; > pp->f = 1; > p->next = pp; > } > } > } > > p = head; > while(p) > { > if(p->f > 1) > { > for(i = 6; i >= 0; i--) > { > output[i] = p->num % 10 +'0'; > p->num /= 10; > } > > for(i = 0; i < 7; i++) > { > if(i == 3) printf("-"); > printf("%c", output[i]); > } > flag = 1; > printf(" %ld\n", p->f); > } > p = p->next; > } > if(!flag) printf("No duplicates.\n"); > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator