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 cpp050200448236 at 2005-03-24 19:16:55 on Problem 1002
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <iomanip.h>

int count[100000],tcount;

int cmp ( const void *a ,const void *b ) 
 {
 	int *m = (int *)a, *n = (int *)b ;
	if ( *m > *n )
		return 1;
 	if ( *m < *n )
 		return -1;
	else return 0;
 }

void main(){
	int i,j,n,k,l,t,state=0;
	cin>>n;
	long int *tel=new long int [n];
	char calln[400];
	char teln[8];
	for(i=0;i<n;i++){
		cin>>calln;
		l=strlen(calln);
		t=0;
		for(k=0;k<l;k++){
			if(calln[k]>='A'&&calln[k]<='Z'){
				switch(calln[k]){
				case'A':case'B':case'C': teln[t]='2';break;
				case'D':case'E':case'F': teln[t]='3';break;
				case'G':case'H':case'I': teln[t]='4';break;
				case'J':case'K':case'L': teln[t]='5';break;
				case'M':case'N':case'O': teln[t]='6';break;
				case'P':case'R':case'S': teln[t]='7';break;
				case'T':case'U':case'V': teln[t]='8';break;
				case'W':case'X':case'Y': teln[t]='9';break;
				}
				t++;
			}
			if(calln[k]>='0'&&calln[k]<='9'){ teln[t]=calln[k]; t++;}
		}
		teln[7]='\0';
		tel[i]=atoi(teln);
	}


	qsort(tel,n,sizeof(long int),cmp);

	for(i=0;i<n;i++){
		count[i]=1;
		if(tel[i]!=-1){
			for(j=i+1;j<n;j++)
				if(tel[i]==tel[j]){
					tel[j]=-1;
					count[i]++;
				}
			if(count[i]>1){
				state=1;
				cout<<setfill('0')<<setw(3)<<tel[i]/10000<<"-"<<setw(4)<<tel[i]%10000
					<<" "<<count[i]<<endl;						
			}
		}
	}
	if(state==0) cout<<"No duplicates."<<endl;
	delete []tel;
}

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