POJ 3096 Surprising Strings

来源:互联网 发布:怎么卸载java环境 编辑:程序博客网 时间:2024/06/01 10:11

中级的水题,map就可以水过、、主要是练习一下map的使用。

题意就是:判断间隔长度相同的连续的两个字符串是否相同,如果不相同就输出is NOT surprising.否则输出is surprising.

Surprising Strings
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 5315 Accepted: 3492

Description

The D-pairs of a string of letters are the ordered pairs of letters that are distance D from each other. A string is D-unique if all of its D-pairs are different. A string is surprisingif it is D-unique for every possible distance D.

Consider the string ZGBG. Its 0-pairs are ZG, GB, and BG. Since these three pairs are all different, ZGBG is 0-unique. Similarly, the 1-pairs of ZGBG are ZB and GG, and since these two pairs are different, ZGBG is 1-unique. Finally, the only 2-pair of ZGBG is ZG, so ZGBG is 2-unique. Thus ZGBG is surprising. (Note that the fact that ZG is both a 0-pair and a 2-pair of ZGBG is irrelevant, because 0 and 2 are different distances.)

Acknowledgement: This problem is inspired by the "Puzzling Adventures" column in the December 2003 issue of Scientific American.

Input

The input consists of one or more nonempty strings of at most 79 uppercase letters, each string on a line by itself, followed by a line containing only an asterisk that signals the end of the input.

Output

For each string of letters, output whether or not it is surprising using the exact output format shown below.

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.
#include <iostream>#include <stdlib.h>#include <stdio.h>#include <string>#include <cmath>#include <string.h>#include <map>using namespace std;char s[110];int main(){    int i, j, k;    while(cin >>s)    {        k = strlen(s);        if(k == 1 && s[0] == '*')            break;        if(k <= 2)        {            cout <<s<<" is surprising."<<endl;            continue;        }        int flag = 1;        for(i = 0; i <= k-2; i++)        {            map<string , bool> flat;            int flag1 = 1;            for(j = 0; j <= k-2-i; j++)            {                char str[3]= {s[j], s[j+i+1], '\0'};                if(!flat[str])                    flat[str] = true;                else                {                    flag1 = 0;                    break;                }            }            if(!flag1)            {                flag = 0;                break;            }        }        if(!flag)            cout <<s<<" is NOT surprising."<<endl;        else            cout <<s<<" is surprising."<<endl;    }    return 0;}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 6激素检查喝水了怎么办 抽血前吃了东西怎么办 怀孕一个月孕酮低怎么办 怀孕了老是有痰怎么办 孕妇有很多白痰怎么办 血糖高怎么办吃什么好 5年糖尿病血糖高怎么办 血糖高引起的视力模糊怎么办 谷丙转氨酶和谷草转氨酶高怎么办 产检血糖有点高怎么办 孕期餐后血糖高怎么办 怀孕12周血糖高怎么办 怀孕2个月血糖高怎么办 怀孕7个月血糖高怎么办 孕妇7个月血糖高怎么办 空腹血糖6%2e7怎么办 血糖和尿酸都高怎么办 血糖高的孕妇便秘怎么办 血糖低怎么办吃什么好 孕检空腹血糖高怎么办 怀孕4个月血糖高怎么办 怀孕3个月血糖高怎么办 怀孕6个月血糖高怎么办 孕29周血糖高怎么办 餐后血糖偶尔高怎么办 歺后血糖9.8高怎么办 怀孕5个月血糖高怎么办 歺后2小时血糖高怎么办 怀孕餐后血糖高怎么办 老人餐后血糖高怎么办 血糖高尿糖不高怎么办 小孩鼻子不通气怎么办特效方法 婴儿20天不大便怎么办 新生儿8天没大便怎么办 新生儿2天没大便怎么办 新生儿4天没大便怎么办 2岁宝宝便秘严重怎么办 婴儿7天没有大便怎么办 新生儿6天没大便怎么办 大便带鲜血 不疼怎么办 宝宝发烧到39度怎么办