| ||||||||||
| 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<vector>
#include<iostream>
#include<string>
using namespace std;
string deal(string s){
int t;
while((t=s.find('-',0)) != -1) s = s.erase(t,1);
for(int k = 0;k < s.length();k++)
if(isdigit(s[k]) == 0)
switch(s[k]){
case'A'...'C':s[k] = '2';break;
case'D'...'F':s[k] = '3';break;
case'G'...'I':s[k] = '4';break;
case'J'...'L':s[k] = '5';break;
case'M'...'O':s[k] = '6';break;
case'P'...'S':s[k] = '7';break;
case'T'...'V':s[k] = '8';break;
case'W'...'Y':s[k] = '9';break;
default:break;
}
return s;
}
int main(){
int n;
cin>>n;
string s;
vector<string> v;
vector<string>::iterator v1;
bool isnull = true;
if( n == 1) cout<<"No duplicates."<<endl;
else{
while(n != 0){
n--;
cin>>s;
v.push_back(deal(s));
}
sort(v.begin(),v.end());
s = *v.begin();
for(v1 = v.begin();v1 != v.end();v1++)
if(*v1 == s)
{n++;
if(v1+1 == v.end()) if( n >1) {cout<<s.insert(3,1,'-')<<" "<<n<<endl; isnull = false;break;}
}
else{
if( n >1) {cout<<s.insert(3,1,'-')<<" "<<n<<endl; isnull = false;}
s = *v1;
n = 1;}
if(isnull) cout<<"No duplicates."<<endl;}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator