poj1002
2016-03-21 21:08
483 查看
Problem:487-3279
Description: 企业喜欢用容易被记住的电话号码。让电话号码容易被记住的一个办法是将它写成一个容易记住的单词或者短语。例如,你需要给滑铁卢大学打电话时,可以拨打TUT-GLOP。有时,只将电话号码中部分数字拼写成单词。当你晚上回到酒店,可以通过拨打310-GINO来向Gino’s订一份pizza。让电话号码容易被记住的另一个办法是以一种好记的方式对号码的数字进行分组。通过拨打必胜客的“三个十”号码3-10-10-10,你可以从他们那里订pizza。
电话号码的标准格式是七位十进制数,并在第三、第四位数字之间有一个连接符。电话拨号盘提供了从字母到数字的映射,映射关系如下:
A, B, 和C 映射到 2
D, E, 和F 映射到 3
G, H, 和I 映射到 4
J, K, 和L 映射到 5
M, N, 和O 映射到 6
P, R, 和S 映射到 7
T, U, 和V 映射到 8
W, X, 和Y 映射到 9
Q和Z没有映射到任何数字,连字符不需要拨号,可以任意添加和删除。 TUT-GLOP的标准格式是888-4567,310-GINO的标准格式是310-4466,3-10-10-10的标准格式是310-1010。
如果两个号码有相同的标准格式,那么他们就是等同的(相同的拨号)
你的公司正在为本地的公司编写一个电话号码薄。作为质量控制的一部分,你想要检查是否有两个和多个公司拥有相同的电话号码。
Solution: 纯模拟题,作为一个渣渣,这题我还是花了蛮长的时间才AC的,而且看了别人的博客才只知道这题是可以用map处理的(虽然我现在还是不知道是什么鬼),反正我是水过去的。做完这个题吧,自己感觉对字符串要更熟悉了一点,而且也用到了许多自己平常不怎么样会用的东西,也深刻理解到了C的输入输出读取时间要比C++快啊!!!
Code(C++):
Description: 企业喜欢用容易被记住的电话号码。让电话号码容易被记住的一个办法是将它写成一个容易记住的单词或者短语。例如,你需要给滑铁卢大学打电话时,可以拨打TUT-GLOP。有时,只将电话号码中部分数字拼写成单词。当你晚上回到酒店,可以通过拨打310-GINO来向Gino’s订一份pizza。让电话号码容易被记住的另一个办法是以一种好记的方式对号码的数字进行分组。通过拨打必胜客的“三个十”号码3-10-10-10,你可以从他们那里订pizza。
电话号码的标准格式是七位十进制数,并在第三、第四位数字之间有一个连接符。电话拨号盘提供了从字母到数字的映射,映射关系如下:
A, B, 和C 映射到 2
D, E, 和F 映射到 3
G, H, 和I 映射到 4
J, K, 和L 映射到 5
M, N, 和O 映射到 6
P, R, 和S 映射到 7
T, U, 和V 映射到 8
W, X, 和Y 映射到 9
Q和Z没有映射到任何数字,连字符不需要拨号,可以任意添加和删除。 TUT-GLOP的标准格式是888-4567,310-GINO的标准格式是310-4466,3-10-10-10的标准格式是310-1010。
如果两个号码有相同的标准格式,那么他们就是等同的(相同的拨号)
你的公司正在为本地的公司编写一个电话号码薄。作为质量控制的一部分,你想要检查是否有两个和多个公司拥有相同的电话号码。
Solution: 纯模拟题,作为一个渣渣,这题我还是花了蛮长的时间才AC的,而且看了别人的博客才只知道这题是可以用map处理的(虽然我现在还是不知道是什么鬼),反正我是水过去的。做完这个题吧,自己感觉对字符串要更熟悉了一点,而且也用到了许多自己平常不怎么样会用的东西,也深刻理解到了C的输入输出读取时间要比C++快啊!!!
Code(C++):
#include <iostream> #include <cstring> #include <string> #include <cstdio> #include <algorithm> using namespace std; struct tag{ string sr; int cn; }number[100050]; string s[100050]; int flag[100050],cnt[100050]; bool cmp(tag x,tag y) { return (x.sr<y.sr); } bool cmp1(string s1,string s2) { return s1<s2; } int main() { int n,i,j,k=0,t=0,len; string str; char tmp[522]; bool m 4000 =false; memset(flag,0,sizeof(flag)); memset(cnt,0,sizeof(cnt)); for(i=0;i<10000;i++) s[i]=""; //cin>>n; scanf("%d",&n); for(i=0;i<n;i++) { //cin>>str; scanf("%s",tmp); str=tmp; len=str.length(); for(j=0;j<len;j++) { if(str.at(j)=='1') s[i]+="1"; if(str.at(j)=='0') s[i]+="0"; if(str.at(j)=='A'||str.at(j)=='B'||str.at(j)=='C'||str.at(j)=='2') s[i]+="2"; if(str.at(j)=='D'||str.at(j)=='E'||str.at(j)=='F'||str.at(j)=='3') s[i]+="3"; if(str.at(j)=='G'||str.at(j)=='H'||str.at(j)=='I'||str.at(j)=='4') s[i]+="4"; if(str.at(j)=='J'||str.at(j)=='K'||str.at(j)=='L'||str.at(j)=='5') s[i]+="5"; if(str.at(j)=='M'||str.at(j)=='N'||str.at(j)=='O'||str.at(j)=='6') s[i]+="6"; if(str.at(j)=='P'||str.at(j)=='R'||str.at(j)=='S'||str.at(j)=='7') s[i]+="7"; if(str.at(j)=='T'||str.at(j)=='U'||str.at(j)=='V'||str.at(j)=='8') s[i]+="8"; if(str.at(j)=='W'||str.at(j)=='X'||str.at(j)=='Y'||str.at(j)=='9') s[i]+="9"; } } if(n==1) m=false; sort(s,s+n,cmp1); for(i=1;i<=n;i++) { if(s[i]==s[i-1]) cnt[t]++; else t++; } for(i=0;i<n;i++) if(cnt[i]!=0) { m=true; break; } if(m==true) { number[k].sr=s[0]; number[k].cn=cnt[k]+1; k++; for(i=1;i<n;i++) if(s[i]!=s[i-1]) { number[k].sr=s[i]; number[k].cn=cnt[k]+1; k++; } sort(number,number+k,cmp); for(i=0;i<k;i++) { if(number[i].cn!=1) { number[i].sr.insert(3,"-"); printf("%s %d\n",number[i].sr.c_str(),number[i].cn); //cout<<number[i].sr<<" "<<number[i].cn<<endl; } } } else if(m==false) printf("No duplicates. "); //cout<<"No duplicates. "<<endl; return 0; }
相关文章推荐
- 初学ACM - 组合数学基础题目PKU 1833
- POJ ACM 1001
- POJ ACM 1002
- 1611:The Suspects
- POJ1089 区间合并
- POJ 2635 The Embarrassed Cryptographe
- POJ 3292 Semi-prime H-numbers
- POJ 2773 HAPPY 2006
- POJ 3090 Visible Lattice Points
- POJ-2409-Let it Bead&&NYOJ-280-LK的项链
- POJ-1695-Magazine Delivery-dp
- POJ1523 SPF dfs
- POJ-1001 求高精度幂-大数乘法系列
- POJ-1003 Hangover
- POJ-1004 Financial Management
- 用单调栈解决最大连续矩形面积问题
- 2632 Crashing Robots的解决方法
- 1573 Robot Motion (简单题)
- POJ 1200 Crazy Search(简单哈希)
- 【高手回避】poj3268,一道很水的dijkstra算法题