POJ 1002 487-3279(map应用)
2015-03-25 19:01
447 查看
用map+string写的,减少代码量
本题有几个坑:
1.输入字符串至少要开到50
2.要考虑电话号码中有0的情况,比如000-0000
map插入后会自动按字典序排序。
迭代器定义方法:
map<string,int>::iterator p;
代码:
本题有几个坑:
1.输入字符串至少要开到50
2.要考虑电话号码中有0的情况,比如000-0000
map插入后会自动按字典序排序。
迭代器定义方法:
map<string,int>::iterator p;
代码:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; #include <algorithm> #include <map> #include <string> map<string,int> Num; string Hash(char c){ if(c=='A'||c=='B'||c=='C') return "2"; if(c=='D'||c=='E'||c=='F') return "3"; if(c=='G'||c=='H'||c=='I') return "4"; if(c=='J'||c=='K'||c=='L') return "5"; if(c=='M'||c=='N'||c=='O') return "6"; if(c=='P'||c=='R'||c=='S') return "7"; if(c=='T'||c=='U'||c=='V') return "8"; if(c=='W'||c=='X'||c=='Y') return "9"; } int main(){ int N; scanf("%d",&N); for(int i=0;i<N;i++){ char s[60]; scanf("%s",s); int len=strlen(s); string num=""; for(int i=0;i<len;i++){ if(s[i]=='-') continue; if(isdigit(s[i])){ num+=s[i]; } else num+=Hash(s[i]); } Num[num]++; } map<string,int>::iterator p; bool flag=0; for(p=Num.begin();p!=Num.end();p++){ string n=(*p).first; if(Num <=1) continue; flag = 1; for(int i=0;i<3;i++){ cout<<n[i]; } printf("-"); for(int i=3;i<7;i++) cout<<n[i]; printf(" %d\n",Num ); } if(!flag) printf("No duplicates."); return 0; }
相关文章推荐
- POJ 1002 487-3279(map映照容器的使用)
- poj 1002 487-3279之map解法
- POJ 1002 487-3279(Map)
- poj 1002 487-3279 map的使用
- 【String+Map版】从poj 1002——487-3279的STL做法和若干陷阱来分析MAP
- POJ1002 487-3279(map映射)
- POJ 1002 487-3279(map)
- poj 1002 487-3279(map)
- POJ 1002 487-3279 MAP||Sort
- poj 1002 487-3279(使用STL map)
- poj 1002(487-3279)STL中的map
- poj1002 487-3279(STL map应用)
- POJ-1002 487-3279(map)
- POJ 1002 487-3279
- POJ-1002-487-3279-解题报告
- POJ--1002 487-3279
- POJ 1002 487-3279
- zoj 1159 || poj 1002 487-3279
- poj 1002 487-3279
- poj 1002 487-3279