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

换别的排序方法试试

Posted by YUMEN19850720 at 2007-03-17 20:47:21 on Problem 1002
In Reply To:请问怎么才能让这个程序时间再缩短阿????!!!!!已经用了快速排序,还是TLE!!!谢谢了 Posted by:1234_ at 2007-03-17 20:31:06
> #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