pku 1002

submit了十几次了,终于AC了,用c++ stl map+string做的 

 1 #include <iostream>
 2 #include <map>
 3 #include <string>
 4 using namespace std;
 5 
 6 string format(char *s)
 7 {
 8     int i,index;
 9     char r[20];
10     index = 0;
11     i=0;
12     while (s[i]!='\0')
13     {
14         if(s[i]>='A'&&s[i]<='R')
15             r[index++= (s[i] - 'A')/3 + '2';
16         else if(s[i]>='S'&&s[i]<='Y')
17         {
18             r[index++= (s[i] - 'A' - 1)/3 + '2';
19         }
20         else if(s[i]!='-')
21             r[index++= s[i];
22         if(index==3)
23             r[index++= '-';
24         i++;
25     }
26     r[index] = '\0';
27     string str(r);
28     return str;
29 }
30 
31 int main()
32 {
33     int i,n;
34     char s[20];
35     string str;
36     map <string,int> m;
37     map <string,int>::const_iterator m_it;
38     int flag = 0;
39     cin>>n;
40     for (i=0; i<n; i++)
41     {
42         cin>>s;
43         str=format(s);
44         if (m.find(str)!=m.end())
45         {
46             m[str]++;
47         }
48         else
49             m[str]=1;
50     }
51     m_it = m.begin();
52 
53     while (m_it!= m.end())
54     {
55         if(m_it->second>1)
56         {
57             flag = 1;
58             cout<<m_it->first<<" "<<m_it->second<<endl;
59         }
60         m_it++;
61     }
62     if(!flag)
63         cout<<"No duplicates."<<endl;
64     return 0;

65 } 

posted @ 2009-04-14 15:06  icecryed  阅读(608)  评论(0编辑  收藏  举报