| ||||||||||
| 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 | |||||||||
我是菜鸟 郁闷啊 我写了好久 还是超时 哪位高手帮忙谈谈怎么减少运行时间 谢谢了哪位高手帮忙告诉下最简单的改进方法 还有就是时间主要浪费在哪里
#include"stdio.h"
#include"string.h"
struct Tel
{
char num[8];
Tel* next;
Tel* pre;
int times;
}*head;
void init()
{
Tel* tel1=new Tel;
Tel* tel2=new Tel;
tel1->times=0;
for(int i=0;i<6;i++)
{
tel1->num[i]='0';
tel2->num[i]='0';
}
tel1->num[6]='0';
tel1->num[7]='\0';
tel2->num[6]='1';
tel2->num[7]='\0';
tel2->times=0;
tel1->next=tel2;
tel1->pre=NULL;
tel2->pre=tel1;
tel2->next=NULL;
head=tel1;
}
char translate(char in)
{
if(in=='1') return '1';
else if(in=='2'||in=='A'||in=='B'||in=='C') return '2';
else if(in=='3'||in=='D'||in=='E'||in=='F') return '3';
else if(in=='4'||in=='G'||in=='H'||in=='I') return '4';
else if(in=='5'||in=='J'||in=='K'||in=='L') return '5';
else if(in=='6'||in=='M'||in=='N'||in=='O') return '6';
else if(in=='7'||in=='P'||in=='R'||in=='S') return '7';
else if(in=='8'||in=='T'||in=='U'||in=='V') return '8';
else if(in=='9'||in=='W'||in=='X'||in=='Y') return '9';
else return '0';
}
void insert(Tel* x,Tel* z)
{
if(strcmp(z->num,x->num)==0)
{
x->times++;
}
else if(strcmp(z->num,x->num)<0)
{
if(x->pre==NULL){x->pre=z;z->next=x;}
else
{
Tel *p=new Tel;
p=x->pre;
p->next=z;
z->pre=p;
x->pre=z;
z->next=x;
}
}
else
{
if(x->next==NULL)
{
x->next=z;z->pre=x;
z->next=NULL;
}
else insert(x->next,z);
}
}
int main()
{
init();
int is=0;
int amount;
Tel* p=head;
char space=' ';
void insert(Tel* x,Tel* z);
//cin>>amount;
scanf("%d",&amount);
getchar();
for(int i=0;i<amount;i++)
{
Tel* tel=new Tel;
int k=0;
//char temp;
while(true)
{
char temp;
scanf("%c",&temp);
if(temp=='-') continue;
else if(temp=='\n') break;
else tel->num[k++]=translate(temp);
}
tel->num[k++]='\0';
tel->times=1;
p=head;
insert(p,tel);
p=head;
}
Tel* q=head;
while(q!=NULL)
{
if(q->times>1)
{//cout<<q->num[0]<<q->num[1]<<q->num[2]<<'-'<<q->num[3]<<q->num[4]<<q->num[5]<<q->num[6]<<" "<<q->times<<endl;
//printf("%d",q->times);
printf("%c%c%c-%c%c%c%c %d\n",q->num[0],q->num[1],q->num[2],q->num[3],q->num[4],q->num[5],q->num[6],q->times);
is++;
}
q=q->next;
}
if(is==0) printf("No duplicates.\n");
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator