Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:谁帮忙看下啊...为什么为TLE啊!!!!

Posted by Mirikle at 2010-01-29 23:41:26 on Problem 1002
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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator