http://poj.org/problem?id=1002

题意:是说很多公司用了容易记住的电话号码,例如有英文字母的或者是用了很多连字符或没有连字符的。每个电话号码都有标准模式,而为了统计有没有重复的电话号码,就要统计有多少的电话号码是重复的,只要是有重复的就输出他的标准模式,如果所有的字符串都没有重复的,就输出No duplicates.

思路:这个题就用了普通的枚举,用的是cin输入的,结果是超时了,后来改成scanf就A了。这个题还可以用map去做,以及在排序的时候转换成整型会省更多的时间,后两种方法,第一种方法用时1454ms,第三种方法用时574ms,至于map我还没写,夜实在是深了,我先睡了,明天去做一下 。

普通方法

#include<iostream>
#include<cstring>
#include<string>
#include<cstdlib>
#include<cstdio>
#include<algorithm> using namespace std ; char a[] = "";
char ch[] ,sh[][];
int n ,j; int cmp(const void *b,const void *c)
{
return strcmp((char *)b,(char *)c) ;
}
void cuizhehundan()
{
int len = strlen(ch) ;
int flag = ;
for(int i = ; i < len ; i++)
{
if(ch[i] >= ''&&ch[i] <= '')
sh[j][flag++] = ch[i] ;
if(ch[i] == '-'||ch[i] == 'Q'||ch[i] == 'Z')
continue ;
if(ch[i] >= 'A'&&ch[i] < 'Z')
sh[j][flag++] = a[ch[i]-'A'];
}
sh[j][flag] = '\0' ;
//cout<<sh[j]<<endl;
} int main()
{
int n ;
cin>>n ;
for(j = ; j < n ; j++)
{
scanf("%s",ch) ;
cuizhehundan();
}
qsort(sh,n,sizeof(sh[]),cmp) ;
int mark = ;
for(int i = ; i < n- ; i++)
{
int num = ;
// int x = i ;
while(i < n- &&strcmp(sh[i],sh[i+]) == )
{
num++ ;
i++ ;
}
if(num > )
{
for(int h = ; h < ; h++)
printf("%c",sh[i][h]);
cout<<'-';
for(int h = ; h < ; h++)
printf("%c",sh[i][h]);
// cout<<" ";
printf(" %d\n",num) ;
//cout<<num<<endl;
mark = ;
}
num = ;
}
if(!mark)
printf("No duplicates.\n");
return ;
}

转化整型

#include<iostream>
#include<cstring>
#include<string>
#include<cstdlib>
#include<cstdio>
#include<algorithm> using namespace std ; char a[] = "";
char ch[] ;
char sh[];
int n ,j; void cuizhehundan()
{
int len = strlen(ch) ;
int flag = ;
for(int i = ; i < len ; i++)
{
if(ch[i] >= ''&&ch[i] <= '')
sh[flag++] = ch[i] ;
if(ch[i] == '-'||ch[i] == 'Q'||ch[i] == 'Z')
continue ;
if(ch[i] >= 'A'&&ch[i] < 'Z')
sh[flag++] = a[ch[i]-'A'];
}
sh[flag] = '\0' ;
// for(int i = 0 ; i < len ; i++)
// cout<<sh[i];
// cout<<endl;
} int main()
{
int n ;
cin>>n ;
int shh[] ;
for(j = ; j < n ; j++)
{
scanf("%s",ch) ;
cuizhehundan();
shh[j] = atoi(sh) ;
}
sort(shh,shh+n) ;
//qsort(sh,n,sizeof(sh[0]),cmp) ;
int mark = ;
for(int i = ; i < n- ; i++)
{
int num = ;
// int x = i ;
while(i < n- &&shh[i]==shh[i+])
{
num++ ;
i++ ;
}
if(num > )
{
printf("%03d-%04d %d\n",shh[i]/,shh[i]%,num) ;
mark = ;
}
num = ;
}
if(!mark)
printf("No duplicates.\n");
return ;
}

说好的map做法,昨晚因为不舒服很早就睡了

#include<cstdio>
#include<iostream>
#include<cstring>
#include<map>
#include<algorithm>
#include<string>
#define maxn 1000
using namespace std;
char s1[maxn],s2[maxn];
char s3[]="2223334445556667Q77888999Z";
map<string, int>q;
void change(char s[])
{
int k=strlen(s);
int j=;
for(int i=; i<k; i++)
{
if(s[i]!='Q'&&s[i]!='Z'&&s[i]!='-')
{
char c=s[i];
if(s[i]>='A'&&s[i]<'Z')
{
c=s3[c-'A'];
}
if(j==)
s2[j++]='-';
s2[j++]=c;
}
}
s2[j]='\0';
//printf("%s\n",s2);
if(q.find(s2)==q.end())
q[s2]=;
else
q[s2]++;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%s",s1);
change(s1);
}
map<string,int>::iterator it=q.begin();
bool flag=false;
while(it!=q.end())
{
if(it->second>)
{
flag=true;
cout<<it->first<<" "<<it->second<<endl;
}
it++;
}
if(!flag) printf("No duplicates.\n");
return ;
}

POJ1002487-3279(map)的更多相关文章

  1. GO语言总结(4)——映射(Map)

    上一篇博客介绍了Go语言的数组和切片——GO语言总结(3)——数组和切片,本篇博客介绍Go语言的映射(Map) 映射是一种内置的数据结构,用来保存键值对的无序集合. (1)映射的创建 make ( m ...

  2. Java-集合=第五题 (Map)设计Account 对象如下: private long id; private double balance; private String password; 要求完善设计,使得该Account 对象能够自动分配id。 给定一个List 如下: List list = new ArrayList(); list.add(new A

    第五题 (Map)设计Account 对象如下: private long id; private double balance; private String password; 要求完善设计,使得 ...

  3. Java-map-第一题 (Map)利用Map,完成下面的功能: 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该 年没有举办世界杯,则输出:没有举办世界杯。 附:世界杯冠军以及对应的夺冠年份,请参考本章附录。 附录

    第一题 (Map)利用Map,完成下面的功能: 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队.如果该 年没有举办世界杯,则输出:没有举办世界杯. 附:世界杯冠军以及对应的夺冠年 ...

  4. 第一题 (Map)利用Map,完成下面的功能:

    从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队.如果该 年没有举办世界杯,则输出:没有举办世界杯.  附:世界杯冠军以及对应的夺冠年份,请参考本章附录. 附录  1.历届世界杯冠 ...

  5. 【机器学习基本理论】详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解

    [机器学习基本理论]详解最大似然估计(MLE).最大后验概率估计(MAP),以及贝叶斯公式的理解 https://mp.csdn.net/postedit/81664644 最大似然估计(Maximu ...

  6. 【机器学习基本理论】详解最大后验概率估计(MAP)的理解

    [机器学习基本理论]详解最大后验概率估计(MAP)的理解 https://blog.csdn.net/weixin_42137700/article/details/81628065 最大似然估计(M ...

  7. GoLang基础数据类型--->字典(map)详解

    GoLang基础数据类型--->字典(map)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   可能大家刚刚接触Golang的小伙伴都会跟我一样,这个map是干嘛的,是 ...

  8. 列表生成式+过滤器(filter)+映射(map)+lambda总结

    这些都是python的特色,不仅强大,而且好用,配合起来使用更是无敌. 零.lambda lambda用于产生一个匿名表达式,组成部分为:lambda + ‘函数表达式’ ‘函数表达式’由一个冒号加上 ...

  9. 最大似然估计(MLE)与最大后验概率(MAP)

    何为:最大似然估计(MLE): 最大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”.可以通过采样,获取部分数据,然后通过最大似然估计来获取已知模型的参数. 最大似然估计 ...

  10. 从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射

    从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射.Collection 接口又有 3 ...

随机推荐

  1. Cocos2d-x实例:单点触摸事件

    addChild(boxC,30, kBoxC_Tag);                                                                        ...

  2. PHP学习笔记 - 入门篇(5)

    PHP学习笔记 - 入门篇(5) 语言结构语句 顺序结构 eg: <?php $shoesPrice = 49; //鞋子单价 $shoesNum = 1; //鞋子数量 $shoesMoney ...

  3. 用css3做标签

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. jQuery ajax 请求php遍历json数组到table中

    html代码(test.html),js在html底部 <!DOCTYPE html> <html lang="en"> <head> < ...

  5. javascript显示倒计时控制按钮

    html: <a><span id="sendAgain" onclick="sendEmail()">2.再次发送激活邮件</s ...

  6. C#调用IOS推送

    C#调用IOS推送 使用的是 PushSharp 开源库 源码代码如下 点我

  7. HTML5 Video(视频)

    HTML5 Video(视频) 很多站点都会使用到视频. HTML5 提供了展示视频的标准. 检测您的浏览器是否支持 HTML5 视频: 检测 Web站点上的视频 直到现在,仍然不存在一项旨在网页上显 ...

  8. WCF、WebAPI、WCF REST、Web Service之间的区别

    在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下,你有很多的选择来构建一个HTTP Services.我分享一下我对 ...

  9. 用JS写的无缝滚动特效

    代码如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta ...

  10. php连接ftp

    PHP连接ftp,发现一个很好用的类库phpseclib.英文原文 Connecting to SFTP with PHP If you need to connect to SFTP using P ...