题意:输入很多字符串,以星号结束。判断每个字符串是不是“Surprising Strings”,判断方法是:以“ZGBG”为例,“0-pairs”是ZG,GB,BG,这三个子串不相同,所以是“0-unique”,“1-pairs”是ZB,GG,这两个也是不同的,所以是“1-unique”,“2-pairs”是ZG,所以是“2-unique”;综合起来是“Surprising Strings”。

思路:用map就可以,做的时候手欠用了暴搜,结果发现竟然0ms过了,不科学。而用map花了16ms非常的不科学。用暴搜的话就是for循环枚举即可,用一个数组标记一下两个字符的和,就行。

map的代码:

#include<cstdio>
#include<cstring>
#include<map>
#include<string>
using namespace std;
char s[];
int main()
{
while(scanf("%s",s))
{
if(!strcmp(s,"*"))
break;
int k=strlen(s);
bool flag=true;
for(int i=; i<=k-; i++)
{
map<string,int>q;
for(int j=; j+i<k; j++)
{
char s1[];
s1[]=s[j];
s1[]=s[j+i+];
s1[]='\0';
if(q.find(s1)==q.end())//进行查找操作
q[s1]=;//没有就标记为1
else
{
flag=false;
break;
}
}
if(!flag) break;
}
if(flag)
printf("%s is surprising.\n",s);
else printf("%s is NOT surprising.\n",s);
}
return ;
}

枚举的代码:

#include<stdio.h>
#include<map>
#include<cstring>
#include<string>
#include<iostream>
using namespace std ;
int main()
{
string str ;
while(cin>>str)
{
if(str=="*")
break ;
bool mark = ;
bool flag[];
for(int i = ; i<=(int)str.length()- ; i++)//强制转换为int类型是因为str.length()是无符号的,如果为1的时候减去2以上的就容易溢出
{
memset(flag,false,sizeof(flag)) ;
for(int j = ; j+i<(int)str.length()- ; j++)
{
int s = (str[j]-'A')+*(str[j+i+]-'A');//防止出现BG和GB这样加起来就成一样的了
if(flag[s] == false)
flag[s] = true ;
else
{
mark = true ;
break ;
}
}
if(mark)
break ;
}
if(mark)
cout<<str<<" is NOT surprising."<<endl;
else
cout<<str<<" is surprising."<<endl;
}
return ;
}

POJ3096Surprising Strings(map)的更多相关文章

  1. POJ3096:Surprising Strings(map)

    http://poj.org/problem?id=3096 for循环真是奇妙! #include <string.h> #include <stdio.h> #includ ...

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

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

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

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

  4. 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; 要求完善设计,使得 ...

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. DWR应用—快速入门篇

    DWR(Direct Web Remoting)是一个Ajax的开源框架,用于改善web页面与Java类交互的远程服务器端的交互体验. 官网:http://directwebremoting.org/ ...

  2. (转)SQL按照日、周、月、年统计数据

    写sql语句分别按日,星期,月,季度,年统计销售额 --按日 select sum(consume),day([date]) from consume_record where year([date] ...

  3. Smarty模板引擎技术二

    Smarty模板引擎技术 内建函数 include_php内建函数 作用:载入一个php文件,将载入的文件的内容赋值给一个变量   注意:该内建函数只能在2.0中使用,如果使用的话,必须得实例化Sma ...

  4. 使用git的正确姿势

    1.Windows上安装git:从https://git-for-windows.github.io下载msysgit. 2.linux(Debian或Ubuntu)安装git:sudo apt-ge ...

  5. javascript多线程简介

    讲多线程之前,我们先了解一下JS的事件机制 浏览器运行时,脚本必须定期让位给UI进程进行来维持网页的响应,闲置太长时间的脚本可能会被浏览器当成失控脚本,进而造成假死或弹窗 事件触发的设计javascr ...

  6. JQ跑马灯

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  7. 解决flash挡住层的问题

    让div在flash上面 设置flash为透明: 插件代码换成如下: <object type="application/x-shockwave-flash" data=&q ...

  8. nginx源码分析

    ngx_init_cycle 解析配置文件 完成模块中command set函数调用

  9. Java 多线程 锁 存款 取款

    http://jameswxx.iteye.com/blog/806968 最近想将java基础的一些东西都整理整理,写下来,这是对知识的总结,也是一种乐趣.已经拟好了提纲,大概分为这几个主题: ja ...

  10. PHP中利用PCLZIP压缩解压文件

    <?php include_once('pclzip.lib.php'); $archive = new PclZip('archive.zip'); /* $v_list = $archive ...