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

请问怎么才能让这个程序时间再缩短阿????!!!!!已经用了快速排序,还是TLE!!!谢谢了

Posted by 1234_ at 2007-03-17 20:31:06 on Problem 1002
#include<iostream.h>
#include <stdlib.h>
#include<cstring>
struct state
{
	char digit[15];
	int num;
};
int main()
{
	void change(char *a);
	int mycompare(const void *elem1,const void *elem2);
	int n;
	cin>>n;
	cin.ignore();
	state *number=new state[n];
	int i,j,count=0;
	char tmp[20];
	for(i=0;i<n;i++)
	{
		number[i].digit[0]='\0';
		number[i].num=0;
	}
	for(i=0;i<n;i++)
	{
		cin.getline(tmp,20);
		change(tmp);
		for(j=0;j<count;j++)
		{
			if(strcmp(tmp,number[j].digit)==0)
			{
				number[j].num++;
				break;
			}
		}
		if(j==count)
		{
			strcpy(number[count].digit,tmp);
			number[count].num++;
			count++;
		}
	}
	qsort(number,n,sizeof(state),mycompare);
	for(i=0;i<n;i++)
	{
		if(number[i].num>1)
		{
	    	cout<<number[i].digit<<' '<<number[i].num<<endl;
		}
	}
	delete []number;
	return 0;
}
void change(char *a)
{
	int i,j=0;
	char tmp[9];
	for(i=0;i<strlen(a);i++)
	{
		if(a[i]>='0'&&a[i]<='9')
		{
			tmp[j]=a[i];
			j++;
		}
		else if(a[i]>='A'&&a[i]<='C')
		{
			tmp[j]='2';
			j++;
		}
		else if(a[i]>='D'&&a[i]<='F')
		{
			tmp[j]='3';
			j++;
		}
		else if(a[i]>='G'&&a[i]<='I')
		{
			tmp[j]='4';
			j++;
		}
		else if(a[i]>='J'&&a[i]<='L')
		{
			tmp[j]='5';
			j++;
		}
		else if(a[i]>='M'&&a[i]<='O')
		{
			tmp[j]='6';
			j++;
		}
		else if(a[i]>='P'&&a[i]<='S'&&a[i]!='Q')
		{
			tmp[j]='7';
			j++;
		}
		else if(a[i]>='T'&&a[i]<='V')
		{
			tmp[j]='8';
			j++;
		}
		else if(a[i]>='W'&&a[i]<='Y')
		{
			tmp[j]='9';
			j++;
		}
	}
	tmp[7]=tmp[6];
	tmp[6]=tmp[5];
	tmp[5]=tmp[4];
	tmp[4]=tmp[3];
	tmp[3]='-';
	tmp[8]='\0';
	strcpy(a,tmp);
}
int mycompare(const void *elem1,const void *elem2)
{
	state *p1,*p2;
	p1=(state *)elem1;
	p2=(state *)elem2;
	return (strcmp(p1->digit,p2->digit));
}

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