博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ3096—Surprising Strings
阅读量:3958 次
发布时间:2019-05-24

本文共 1264 字,大约阅读时间需要 4 分钟。

题目:

所述d-对字母的字符串的是有序对的是彼此的距离d字母。字符串是d-独特的,如果所有的d-对是不同的。的字符串是令人惊讶的,如果它是d-独特的每一个可能的距离D.

考虑串ZGBG。其0对是ZG,GB和BG。由于这三对都是不同的,ZGBG是0,唯一的。类似地,1-对ZGBG的是ZB和GG,并且由于这两个对是不同的,ZGBG是1-唯一的。最后,只有2对ZGBG的是ZG,所以ZGBG是2-唯一的。因此ZGBG是令人惊讶的。 (注意这样一个事实,ZG既是0对和2对ZGBG的是无关紧要的,因为0和2是不同的距离。)
确认:此问题是由科学美国人的2003年12月号的“迷宫历险记”栏目的启发。
输入
输入包括至多79个大写字母的一个或多个非空字符串,由本身的线的每个字符串,随后仅含有一个星号的线的所述输入信号的结束。
产量
为字母,输出它是否被使用以下所示的精确的输出格式奇每个字符串。
Sample Input

ZGBGXEEAABAABAAABBBCBABCC*

Sample Output

ZGBG is surprising.X is surprising.EE is surprising.AAB is surprising.AABA is surprising.AABB is NOT surprising.BCBABCC is NOT surprising.

解题思路:这个题主要是用STL中的map容器,首先每一次把间隔为0、1、2…的串找出来,然后存入map容器中,map 的型号为<string int 》,然后去遍历一遍间隔不同的map,如果出现相同字符串大于2的就输出not;

程序代码:

#include
#include
#include
#include
#include
using namespace std;int main(){
char s[100],s1[100]; int n,i,j,k,t,flag,count; char x,y; while(scanf("%s",s)!=EOF) {
if(s[0]=='*') break; flag=0; n=strlen(s); for(i=1;i<=n-2;i++) {
k=0; t=1; map
m1; while(k+i
::iterator it1; for(it1=m1.begin();it1!=m1.end();it1++) { if((*it1).second>=2) { flag=1; break; } } if(flag==1) break; } if(flag==0) printf("%s is surprising.\n",s); else printf("%s is NOT surprising.\n",s); } return 0;}

转载地址:http://pexzi.baihongyu.com/

你可能感兴趣的文章
Python SocketAPI
查看>>
众包完成的 Nature 大作:世界上作者最多的文章
查看>>
常用URL标注数据集网络下载
查看>>
adaboostM2初探(记录一个例子)
查看>>
Python使用heapq实现小顶堆(TopK大)、大顶堆(BtmK小)
查看>>
用python的matplotlib包绘制热度图
查看>>
matplot pip安装
查看>>
序列S的所有可能情况
查看>>
在Linux上用pip安装scipy
查看>>
随机salt二次加密及hash加密漫谈
查看>>
linux 技巧:使用 screen 管理你的远程会话
查看>>
同时装了Python3和Python2,怎么用pip?
查看>>
linux tar 解压缩zip文件报错的解决
查看>>
vim,ctag和Taglist
查看>>
Ubuntu的apt命令详解
查看>>
Ubuntu Server 设置sshd
查看>>
sort,uniq命令的使用。
查看>>
linux下md5加密(使用openssl库C实现)
查看>>
openssl、MD5的linux安装方法
查看>>
DevC++ 工程没有调试信息的解决办法
查看>>