| ||||||||||
| 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 | |||||||||
1002总是TLE,我都换3种思路写了(真是太弱了…)。能帮我看看给点意见吗?如题。我是这样写的(G++)
//487-3279
//http://poj.org/problem?id=1002
#include<iostream>
#include<string.h>
using namespace std;
struct tele
{
char telnum[25];
int times;
};
int startCheck(tele all[],int m);
void trans(char a[]);
int insert(tele all[],char a[],int m);
void print(tele all[],int m);
const int MAX=100000;
int main()
{
int lines;
tele directory[MAX];
lines = startCheck(directory,MAX);
print(directory,lines);
return 0;
}
int startCheck(tele all[],int m)
{
int lines;
cin >> lines;
if(lines>m)
lines = m;
m = 0;
for(int i=0;i<lines;i++)
{
char temp[25];
cin >> temp;
trans(temp);
m = insert(all,temp,m);
}
return m;
}
int insert(tele all[],char a[],int m)
{
if(m==0)
{
strcpy(all[0].telnum,a);
all[0].times = 1;
return 1;
}
int bl=1;
for(int i=0;i<m;++i)
{
bl=strcmp(all[i].telnum,a);
if(bl==0)
{
all[i].times++;
return m;
break;
}
if(bl==1)
{
for(int j=m-1;j>=i;--j)
{
strcpy(all[j+1].telnum,all[j].telnum);
all[j+1].times = all[j].times;
}
strcpy(all[i].telnum,a);
all[i].times = 1;
return ++m;
}
}
strcpy(all[m].telnum,a);
all[m].times = 1;
return ++m;
}
void print(tele all[],int m)
{
if(!m)
cout << "No duplicates." << endl;
for(int i=0;i<m;++i)
if(all[i].times>1)
cout << all[i].telnum << ' ' << all[i].times << endl;
}
void trans(char a[])
{
int count=0;
char rs[9]="000-0000";
for(int i=0;i<strlen(a);++i)
{
if(a[i]=='0')
{
rs[count] = '0';
if(count++==2)
++count;
continue;
}
if(a[i]=='1')
{
rs[count] = '1';
if(count++==2)
++count;
continue;
}
if('A'<=a[i]&&a[i]<='C'||a[i]=='2')
{
rs[count] = '2';
if(count++==2)
++count;
continue;
}
if('D'<=a[i]&&a[i]<='F'||a[i]=='3')
{
rs[count] = '3';
if(count++==2)
++count;
continue;
}
if('G'<=a[i]&&a[i]<='I'||a[i]=='4')
{
rs[count] = '4';
if(count++==2)
++count;
continue;
}
if('J'<=a[i]&&a[i]<='L'||a[i]=='5')
{
rs[count] = '5';
if(count++==2)
++count;
continue;
}
if('M'<=a[i]&&a[i]<='O'||a[i]=='6')
{
rs[count] = '6';
if(count++==2)
++count;
continue;
}
if(a[i]=='R'||a[i]=='P'||a[i]=='S'||a[i]=='7')
{
rs[count] = '7';
if(count++==2)
++count;
continue;
}
if('T'<=a[i]&&a[i]<='V'||a[i]=='8')
{
rs[count] = '8';
if(count++==2)
++count;
continue;
}
if('W'<=a[i]&&a[i]<='Y'||a[i]=='9')
{
rs[count] = '9';
if(count++==2)
++count;
continue;
}
}
rs[9]=0;
strncpy(a,rs,9);
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator