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 |
STL无压力,但是感觉好慢……#include <cstdio> #include <cstring> #include <cstdlib> #include <map> #include <iostream> using namespace std; void init(); //Initialization char cal(char k);// char -> num void doit();// the main int n; char s1[100]; string s2; map<string,int> m; int main() { init(); doit(); } char cal(char k) { switch (k) { case 'A' : case 'B': case 'C': return '2'; case 'D' : case 'E': case 'F': return '3'; case 'G' : case 'H': case 'I': return '4'; case 'J' : case 'K': case 'L': return '5'; case 'M' : case 'N': case 'O': return '6'; case 'P' : case 'R': case 'S': return '7'; case 'T' : case 'U': case 'V': return '8'; case 'W' : case 'X': case 'Y': return '9'; } return '#'; } void init() { scanf("%d",&n); for (int i = 1; i <= n; ++ i) { scanf("%s",s1); s2 = s1; string :: iterator it = s2.begin(); int p = 0; while (p < s2.length()) { if (s2[p] == '-') { s2.erase(it+p); continue; } if ('A' <= s2[p] && s2[p] <= 'Z') s2[p] = cal(s2[p]); ++ p; } s2.insert(it+3,'-'); m[s2] = m[s2] + 1; } } void doit() { bool ok = false; map<string,int>:: iterator it = m.begin(); for (it = m.begin(); it != m.end(); ++ it) if ( (*it).second != 1) { printf("%s %d\n",(*it).first.c_str(), (*it).second); ok = true; } if (! ok) printf("No duplicates.\n"); } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator