POJ-1002 487-3279
2015-02-06 11:03
381 查看
大致题意:将若干字母电话本映射为数字表示,输出重复电话号码及次数。
题目链接:http://poj.org/problem?id=1002
此题解法很多。这里先将字符串数组转化为7位整数数组,快排后查询元素出现的次数即可。注意输出时的前导零。
题目链接:http://poj.org/problem?id=1002
此题解法很多。这里先将字符串数组转化为7位整数数组,快排后查询元素出现的次数即可。注意输出时的前导零。
#include <stdio.h> #include <iostream> #include <string.h> #include <math.h> #include <algorithm> #include <set> using namespace std; #define MAXN 100005 int dir[MAXN]; char str[305]; int main() { int n; while(~scanf("%d",&n)) { for(int i=0;i<n;i++) { scanf("%s",str); int tmp=0; for(int j=0;str[j]!='\0';j++) { if(str[j]=='-'||str[j]=='Q'||str[j]=='Z') continue; tmp*=10; if(str[j]>='0'&&str[j]<='9') tmp+=str[j]-'0'; else if(str[j]>='A'&&str[j]<='P') tmp+=(str[j]-'A')/3+2; else if(str[j]>='R'&&str[j]<='Y') tmp+=(str[j]-'Q')/3+7; } dir[i]=tmp; } sort(dir,dir+n); dir =-1; int i=0,j=1; bool flag=false; while(i<n) { int num=1; while(dir[i]==dir[j]) { j++; num++; } if(num>1) { flag=true; printf("%.3d-%.4d %d\n",dir[i]/10000,dir[i]%10000,num); } i=j; j=i+1; } if(!flag) puts("No duplicates."); } }
相关文章推荐
- POJ 1002 487-3279
- 北大poj-1002题-487-3279
- POJ 1002 487-3279 Trie解读
- poj 1002 487-3279
- poj 1002 487-3279
- poj 1002 487-3279
- poj1002 487-3279
- poj 1002(487-3279)STL中的map
- POJ 1002 487-3279
- POJ--1002 487-3279
- POJ 1002 487-3279
- poj1002 487-3279
- 【String+Map版】从poj 1002——487-3279的STL做法和若干陷阱来分析MAP
- POJ 1002 487-3279
- [POJ_1002]487-3279
- POJ 1002 487-3279 G++
- POJ 1002 487-3279(map)
- POJ 1002 487-3279(排序)
- poj 1002 487-3279
- poj每日一题之1002(487-3279)