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 |
一直报Time Limited Exceed,大神们帮看看能怎么优化?是STL使用的问题吗?代码如下: #include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std; char maptable[]={'2','2','2','3','3','3','4','4','4','5','5','5','6','6','6','7','-1','7','7','8','8','8','9','9','9','-1'}; bool ifAlphToDec(const char& alph, char& dec) { if(!isalpha(alph)) return false; else { dec = maptable[alph - 'A']; return true; } } int TransToStd(string& input, string& output ) { for(int i=0; i<input.size(); ++i) { char digit; if(ifAlphToDec(input[i],digit)) { if(output.size() == 3) output += '-'; output += digit; } else if(input[i] == '-') { continue; } else { if(output.size() == 3) output += '-'; output += input[i]; } } } int main() { vector<string> Output; int num; cin >>num; for(int i=0; i < num; ++i) { string inputOneline; string outputOneline; cin >> inputOneline; TransToStd(inputOneline, outputOneline); Output.push_back(outputOneline); } sort(Output.begin(),Output.end()); // output int dupnum = 1; vector<string>::iterator iter = Output.begin(); bool Hasdup = false; while(iter != Output.end()) { if((iter+1 != Output.end())&&(*iter == *(iter+1))) { dupnum++; } else { if(dupnum > 1) { cout << *iter << " " << dupnum << endl; Hasdup = true; dupnum = 1; } } iter++; } if(!Hasdup) cout << "No duplicates." <<endl; //system("pause"); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator