| ||||||||||
| 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<iostream>
#include<map>
#include<string>
using namespace std;
char *remove_change(string str);
char change(char c);
int main()
{
int n;
cin>>n;
cin.ignore();
string str;
char *restr;
map<string,int> m;
map<string,int>::iterator iter;
for(int i=0;i<n;i++)
{
getline(cin,str);
restr=remove_change(str);
iter=m.begin();
while(iter!=m.end()&&restr>iter->first)
iter++;
if(iter!=m.end()&&restr==iter->first)
iter->second++;
else
m.insert(iter,map<string,int>::value_type(restr,1));
}
//输出
iter=m.begin();
bool tag=true;
while(iter!=m.end())
{
if(iter->second>1)
{
tag=false;
str=iter->first;
for(int i=0;i<str.length();i++)
{
cout<<str[i];
if(i==2) cout<<'-';
}
cout<<" "<<iter->second<<endl;
}
iter++;
}
if(tag) cout<<"No duplicates.\n";
return 0;
}
char *remove_change(string str)
{
char *temp;
temp=new char[7];
int j=0;
for(int i=0;i<str.length();i++)
{
if('-'==str[i])
continue;
if(str[i]>='0'&&str[i]<='9')
temp[j]=str[i];
else
temp[j]=change(str[i]);
j++;
}
temp[j]='\0';
return temp;
}
char change(char c)
{
char temp;
switch(c)
{
case 'A':case 'B':case 'C':
temp='2';break;
case 'D':case 'E':case 'F':
temp='3';break;
case 'G':case 'H':case 'I':
temp='4';break;
case 'J':case 'K':case 'L':
temp='5';break;
case 'M':case 'N':case 'O':
temp='6';break;
case 'P':case 'R':case 'S':
temp='7';break;
case 'T':case 'U':case 'V':
temp='8';break;
case 'W':case 'X':case 'Y':
temp='9';break;
}
return temp;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator