Autor da análise: dinak
Link: http://acm.pku.edu.cn/JudgeOnline/problem?id=3096
Resumo
Para cada linha de texto da entrada, dizer se ela é supreendente ou não. Uma string é surpreendente se para para cada par de caracteres d distantes, esse par é único, com 0 <= d <= n-2, onde n é o tamanho da string.
Solução
Podemos fazer um laço que testa todos os n-1 Ds (D de 0 até n-2 inclusive), e dentro desse laço, para cada par, verificar se ele é único, o código abaixo ilustra uma forma de implementar:
n = strlen(s) - 1; for(d=0; d<n; d++) for(i=0; i<n-d; i++){ j = 0; while(j<i && ( s[j]!=s[i] || s[j+d+1]!=s[i+d+1] )) j++; if(j<i){ printf("%s is NOT surprising.\n", s); return; } } printf("%s is surprising.\n", s);
Discuta o problema