题意:
看题目示例领会
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.
解题思路:
用map存每个pair,判断是否存在即可。
代码:
#include <iostream>
#include <cstdio>
#include <map>
#include <string>
#include <cstring>
using namespace std;
int main()
{
string str;
while(cin>>str)
{
map<string, int>d[80];
if(str=="*")break;
int i, j;
int len=str.size();
string mpstr;
int ans=1;
for(i=1; i<=len-1; i++)
{
for(j=0; j+i<len; j++)
{
char e[11];
e[0]=str[j];
e[1]=str[j+i];
e[2]='\0';
mpstr=e;
// cout<<mpstr<<endl;
if(d[i].find(mpstr)!=d[i].end())ans=0;
else d[i][mpstr]=1;
}
}
if(ans)
{
cout<<str<<" is surprising."<<endl;
}
else cout<<str<<" is NOT surprising."<<endl;
}
return 0;
}