题目:http://poj.org/problem?id=3096
注:用G++提交。。。如果用c++提交或CE

1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<map> 5 using namespace std; 6 7 int main() 8 { 9 char str[85]; 10 11 12 while(scanf("%s",str)!=EOF) 13 { 14 if(str[0]=='*') 15 break; 16 int len=strlen(str); 17 int i; 18 int flag=0; 19 for(int d=1;d<=len-1;d++) 20 { 21 map<string, int>mp;//如果用mp.clear()会wa 22 for(i=0;i<len-d;i++) 23 { 24 char sstr[3]={str[i],str[i+d],'\0'}; 25 if(!mp[sstr]) 26 { 27 mp[sstr]=1; 28 } 29 else 30 { 31 flag=1; 32 break; 33 } 34 } 35 if(flag==1) 36 break; 37 } 38 if(flag==1) 39 printf("%s is NOT surprising.\n",str); 40 else 41 printf("%s is surprising.\n",str); 42 } 43 44 return 0; 45 }