杭电2736 Surprising Strings

原创 2015年11月20日 21:17:54

Surprising Strings

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 422    Accepted Submission(s): 290


Problem 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 surprising if 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
ZGBG X EE AAB AABA AABB BCBABCC *
 

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.
 

Source
 
最近在测字符串问题,做的很有感觉:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char s[110000][3],sh[110];
int i,j,k,l,m,n,ans,num,flag,sum,len;
int ac()
{
	int i,j;
	for(i=0;i<l;i++)
	for(j=i+1;j<l;j++)
	if(strcmp(s[i],s[j])==0)
	return 0;
	return 1;
}
int main()
{
	while(scanf("%s",sh),strcmp(sh,"*\0"))
	{
		flag=0;
		len=strlen(sh);
		if(len<3)
		flag=1;
		for(i=0;i<len-2;i++)
		{
			l=0;
			for(j=0;j+i<len-1;j++)
			{
				s[l][0]=sh[j];
				s[l++][1]=sh[j+i+1];
			}
			if(ac()==0)
			break;
		}
		if(i==len-2)
		flag=1;
		if(flag)
		printf("%s is surprising.\n",sh);
		else
		printf("%s is NOT surprising.\n",sh);
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

HDOJ 2736 Surprising Strings

Surprising Strings Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe...

poj 3096 Surprising Strings(stl map的使用)

第二道map的应用 原题链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=17090 题意就是给你一个字符串,例如Z...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

poj 3096 Surprising Strings

Surprising Strings Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6017...

POJ 3096 Surprising Strings(我的水题之路——重点,D-pairs)

Surprising Strings Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3960...

[ACM] POJ 3096 Surprising Strings (map的使用)

Surprising Strings Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5783...

POJ3096-Surprising Strings

转载请注明出处:優YoU  http://user.qzone.qq.com/289065406/blog/1307434869   大致题意: 定义D-pairs表示取字符串s中相距为D的两个...

CSU-ACM2017暑期训练1-Debug与STL A - Surprising Strings

A - Surprising StringsThe D-pairs of a string of letters are the ordered pairs of letters that are d...

poj3096——Surprising Strings(STL)

DescriptionThe D-pairs of a string of letters are the ordered pairs of letters that are distance D f...

poj 3096 Surprising Strings

//这题的测试数据很水,以为下面的做法会超时的!呵呵! 题意:在一个字符串中,给出一些字符间的距离,然后 //让你根据这距离再重新组成字符串,检查是否有相同的字符串存在! #include #in...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)