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. OpenGL8-直接分配显存-极速绘制(Opengl1.5版本才有)

    视频教程请关注 http://edu.csdn.net/lecturer/lecturer_detail?lecturer_id=440 /** * 这个例子介绍如何使用显卡内存进行绘制 下载地址 : ...

  2. A标签执行js 代码和跳转

    5.执行JS代码: <a href="javascript:js代码">内容</a> ⑥.使用js来实现空链接 写法:<a href="ja ...

  3. URAL 1024 Permutations(LCM)

    题意:已知,可得出 P(1) = 4, P(2) = 1, P(3) = 5,由此可得出 P(P(1)) = P(4) = 2. And P(P(3)) = P(5) = 3,因此.经过k次如上变换, ...

  4. java运算符新用法和^新认识

    public class Demo1 { public static void main(String[] args) { boolean t = false | true; System.out.p ...

  5. 何谓IOC的核心思想

    IOC(Inversion of Control)即控制反转,是在面试或平常交流中经常遇到了词汇:我也曾经仿照Spring,利用JDK的反射和动态代理实现了一个简单的IOC框架,感觉算是知其然也知其所 ...

  6. struts2 的action 向页面传值

    写一个Action类: public class LoginAction{ public String execute(){ return SUCCESS; } public void setValu ...

  7. Mysql单实例脚本自动化安装

    安装包:mysql-5.6.31.tar.gz 已有配置文件:my.cnf *注意:本次Mysql的配置文件是在my.cnf的基础上更改得到的,my.cnf存放路径为/opt/rh/my.cnf 脚本 ...

  8. NSS_02 日志配置

    采用log4net,使用系统推荐的最新版本:log4net-1.2.11-bin-newkey.zip(网址:http://logging.apache.org/log4net/download_lo ...

  9. mac下安装pcntl

     Now you need to find out what version of PHP is installed on OSX $ php -vPHP 5.3.10 with Suhosin-Pa ...

  10. android 数据存储的四种方式.

    Android系统一共提供了四种数据存储方式.分别是:SharePreference.SQLite.Content Provider和File.由于Android系统中,数据基本都是私有的的,都是存放 ...